Java の符号なし値に関する問題に直面しています。私を喜ばせてください。実際の問題は、さまざまなデータ型が配置されているバイトバッファーを持っていることです (たとえば、最初に float、次に double、次に int の後にその double のように)、それらの一部は署名され、一部は署名されていない可能性があります。順序とデータ型と符号情報を含むリストを持っているので、バイトバッファからそれらを読み取り、対応する変数に直接割り当てています
例えば:
int i= bytebuffer.getInt();
すべて問題ありませんが、符号なしの最大値の場合、負の値として与えられます。int float, double の場合、これは私が直面している同じ問題です。
Java が unsigned 値をサポートしていないことをいくつか読みましたが、 int 、 short から unsigned 値への変換に遭遇しましたが、 double 、 float について見つけることができませんでした。
編集:私のコードは
File file= new File("blob_960");
int count,length;
length = (int)(file.length());
count=(length/380);
ByteBuffer bytebufr= ByteBuffer.allocate(length);
bytebufr.order(ByteOrder.LITTLE_ENDIAN);
byte[] bytes= new byte[length];
FileInputStream fis = new FileInputStream(file);
fis.read(bytes,0, length);
bytebufr.put(bytes);
bytebufr.position(0);
int i = bytebufr.getInt();
float f = bytebufr.getFloat();
double d = bytebufr.getDouble();
例 - バイト値はあります 220 を使用してバイトを読み取っています
byte b = bytebufr.get();
System.out.println(b); // this is giving -36
// I am expecting 220.
Binary value of 220 is -11011100
Binary value of -36 is -11011100
値を符号付きの値と見なし、-36 を指定していますが、値は符号なしで、220 を期待しています。
ダブルも同様。
どんな体でもこれについて助けてください。