Java
特殊な文字列を byte[] に変換するために使用すると、その結果は次のようになります。
78
-19
-71
-54
-61
-87
12
-99
objective-c
同じ文字列を変換するために使用すると、その結果は次のようになります。
78
237
185
202
195
169
12
157
バイト要素が よりも大きいのはなぜ128
ですかobjective-c
? 原因が であることはわかってunsigned
いますが、どうすれば解決できますか?
Java
特殊な文字列を byte[] に変換するために使用すると、その結果は次のようになります。
78
-19
-71
-54
-61
-87
12
-99
objective-c
同じ文字列を変換するために使用すると、その結果は次のようになります。
78
237
185
202
195
169
12
157
バイト要素が よりも大きいのはなぜ128
ですかobjective-c
? 原因が であることはわかってunsigned
いますが、どうすれば解決できますか?
これに対処する方法は、Java バイトを出力したり比較したりするときに、単純に Java バイトを符号なしとして「扱う」ことです。これを行う最も簡単な方法byteValue & 0xFF
は、バイトの符号なし値を int として取得するために使用することですが、一部のライブラリでは痛みを軽減 UnsignedBytes
できUnsignedBytes.join(" ", byteArray)
ます78 237 185 ...
。例として。(開示:私はGuavaに貢献しています。)
Java バイトは署名されており、Objective-C バイトは署名されていないようです。0 未満の Java バイトに 256 を追加すると、対応する Obj-C バイトが得られます (>= 0 の Java バイトは既に Obj-C バイトと同じです)。簡単に変換できるはずです。