[英]How to convert A string that represents an integer to unsigned byte array in Java?
基本上,我想要的是將像"123456"
這樣的字符串轉換為無符號字節數組: [1, 226, 64]
。 但是,我到處尋找,我發現的是得到2的補碼(帶符號)字節數組[1, -30, 64]
:
byte[] array = new BigInteger("123456").toByteArray();
System.out.println(Arrays.toString(array));
OUTPUT:
[1, -30, 64]
那么,如何在Java中完成呢? 我希望輸出為:
[1, 226, 64]
編輯:我知道該字節最多只能容納127個字節,因此我需要將它作為int數組而不是字節數組。
Java沒有無符號類型,因此您必須將值存儲在int數組中。
byte[] array = new BigInteger("123456").toByteArray();
int[] unsigned_array = new int[array.length];
for (int i = 0; i < array.length; i++) {
unsigned_array[i] = array[i] >= 0 ? array[i] : array[i] + 256;
}
非常坦率的。
Java沒有無符號字節,因此要將它們轉換為整數,就好像它們是無符號的一樣,你需要按順序( &
)與int 0xFF
對它們進行AND運算:
byte[] array = new BigInteger("123456").toByteArray();
for (int i = 0; i < array.length; i++) {
System.out.println(0xFF & array[i]);
}
輸出:
1
226
64
你不一定需要將它們存儲為一個int數組 - 這取決於你想用它們做什么......
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.