私のバイト配列に問題があります。私はそれを長いものに変換し、次に16進数に変換してトーストとして表示しようとします。しかし、私はjava.nio.BufferUnderflowExceptionを取得します。ここに私のコードは次のとおりです。[]バイトをlongに変換するときのjava.nio.BufferUnderflowException
public void onReceivedData(byte[] arg0)
{
String tag = null;
long tagValue = ByteBuffer.wrap(arg0).getLong();
tag = Long.toHexString(tagValue).toUpperCase();
}
問題はラインである:私はこの例外についての情報を探しましたが、答えのどれも私の問題の解決策ではなかった
long tagValue = ByteBuffer.wrap(arg0).getLong();
。
これはlogcatです:だから
arg0 = Arrays.copy(arg0, 8);
:あなたはバイトの可変数を持っているように見えるとして
Process: com.example.eltegps011.eltegps, PID: 17304
java.nio.BufferUnderflowException
at java.nio.ByteArrayBuffer.getLong(ByteArrayBuffer.java:211)
at com.example.eltegps011.eltegps.fragments.StocktakingFragment$9.onReceivedData(StocktakingFragment.java:504)
at com.felhr.usbserial.UsbSerialDevice$WorkerThread.onReceivedData(UsbSerialDevice.java:261)
at com.felhr.usbserial.UsbSerialDevice$WorkerThread.run(UsbSerialDevice.java:235)
arg0にのサイズをチェックして、サイズが間違っている場合は、必要なものを行います。 8のマルチレールは正しい選択であるようです。 – FlanschiFox
arg0を動的に設定することはできますか? – Bartos
私はあなたが何をすべきかわからない。バイト配列は単にバイトバッファ内に置かれます。したがって、ByteBufferをcangeできれば、バイト配列も変更の影響を受けます。あ、はい。 arg0はconstではありません。従って他のはい。 – FlanschiFox