我有一個十六進制字符串,st =「9e」。我需要將它轉換爲字節並將其插入到字節數組中。但我無法從字符串轉換爲字節。我使用的技術如 1)Byte.valueOf(str); 2)新的字節(str); 3)嘗試追加「0X」到str,然後轉換爲字節。 所有這些都給出了錯誤。將字符串轉換爲字節,然後插入字節數組
你能告訴我如何從字符串轉換爲字節。
我有一個十六進制字符串,st =「9e」。我需要將它轉換爲字節並將其插入到字節數組中。但我無法從字符串轉換爲字節。我使用的技術如 1)Byte.valueOf(str); 2)新的字節(str); 3)嘗試追加「0X」到str,然後轉換爲字節。 所有這些都給出了錯誤。將字符串轉換爲字節,然後插入字節數組
你能告訴我如何從字符串轉換爲字節。
您可能正在尋找這樣的事情:
import java.util.*;
import java.lang.*;
class Main
{
public static void main (String[] args)
{
String hex = "9e";
int i = Integer.parseInt(hex, 16);
System.out.println(Arrays.toString(intToBytes(i)));
}
private static byte[] intToBytes(int n)
{
byte[] bytes = new byte[4];
for(int i = 0; i < 4; i++)
{
bytes[i] = (byte) (n | 0);
n >>= 8;
}
return bytes;
}
}
由於字節符號整型,你需要將它們轉換爲無符號值。
喜歡的東西
String x = "2A";
int intValue = Integer.parseInt(x, 16);
byte b = (byte) intValue;
9E是太大字節但因爲它相當於大於128的值,一個字節可以容納。
一個無符號字節可容納0-255但Java只有簽署了可容納-128到127所以你必須適當地映射自己
從'int'到'byte'的強制轉換可能會截斷一個非常大的值,不適合單個字節。包括首先測試整數值並使用掩碼來捕獲最低位字節的斷言將是更爲理智的選擇。 – seh
爲什麼downvoted ?? –
我已經添加,作爲編輯以及 –
您是否嘗試過的範圍字節下面的代碼。
String st = "9e";
byte [] value = st.getBytes();
是的..不工作 –
可能的重複[Convert string to byte \ [\]](http://stackoverflow.com/questions/228987/convert-string-to-byte) – Nishant
downvoting因爲簡單的谷歌搜索會產生正確的回答 –
直截了當的答案已經給你所有的人仍然是你困惑。 –