0

Java特殊な文字列を byte[] に変換するために使用すると、その結果は次のようになります。

78
-19
-71
-54
-61
-87
12
-99

objective-c同じ文字列を変換するために使用すると、その結果は次のようになります。

78
237
185
202
195
169
12
157

バイト要素が よりも大きいのはなぜ128ですかobjective-c? 原因が であることはわかってunsignedいますが、どうすれば解決できますか?

4

2 に答える 2

0

これに対処する方法は、Java バイトを出力したり比較したりするときに、単純に Java バイトを符号なしとして「扱う」ことです。これを行う最も簡単な方法byteValue & 0xFFは、バイトの符号なし値を int として取得するために使用することですが、一部のライブラリでは痛みを軽減 UnsignedBytesできUnsignedBytes.join(" ", byteArray)ます78 237 185 ...。例として。(開示:私はGuavaに貢献しています。)

于 2012-04-12T01:43:27.517 に答える
0

Java バイトは署名されており、Objective-C バイトは署名されていないようです。0 未満の Java バイトに 256 を追加すると、対応する Obj-C バイトが得られます (>= 0 の Java バイトは既に Obj-C バイトと同じです)。簡単に変換できるはずです。

于 2012-04-12T01:43:50.270 に答える