簡體   English   中英

如何將表示整數的字符串轉換為Java中的無符號字節數組?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM