[英]Objective-c Byte[] and Java byte[]
當我使用Java
將特殊字符串轉換為byte []時,其結果是:
78
-19
-71
-54
-61
-87
12
-99
當我使用objective-c
轉換相同的字符串時,其結果是:
78
237
185
202
195
169
12
157
為什么在objective-c
字節元素大於128
? 我知道原因是關於unsigned
,但是如何解決呢?
處理此問題的方法只是在打印出它們或進行比較時將Java字節“處理”為無符號。 最簡單的方法是使用byteValue & 0xFF
以int形式獲取字節的無符號值,但是某些庫可以減輕痛苦-例如,使用番石榴的 UnsignedBytes
,您可以執行UnsignedBytes.join(" ", byteArray)
來獲取以空格分隔的無符號字節,例如UnsignedBytes.join(" ", byteArray)
78 237 185 ...
例如。 (公開:我為番石榴做出了貢獻。)
看起來Java字節是有符號的,而Objective-C字節是無符號的。 如果將256添加到小於0的Java字節中,則會得到相應的Obj-C字節(> = 0的Java字節已經與Obj-C字節相同)。 它應該很容易轉換。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.