2011-11-16 58 views
-2

我有一個十六進制字符串,st =「9e」。我需要將它轉換爲字節並將其插入到字節數組中。但我無法從字符串轉換爲字節。我使用的技術如 1)Byte.valueOf(str); 2)新的字節(str); 3)嘗試追加「0X」到str,然後轉換爲字節。 所有這些都給出了錯誤。將字符串轉換爲字節,然後插入字節數組

你能告訴我如何從字符串轉換爲字節。

+0

可能的重複[Convert string to byte \ [\]](http://stackoverflow.com/questions/228987/convert-string-to-byte) – Nishant

+1

downvoting因爲簡單的谷歌搜索會產生正確的回答 –

+1

直截了當的答案已經給你所有的人仍然是你困惑。 –

回答

-1

您可能正在尋找這樣的事情:

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; 
     } 
} 

由於字節符號整型,你需要將它們轉換爲無符號值。

+0

謝謝你..但它給了-98作爲答案。我需要將9e放在陣列中。 –

+0

這正是我說爲什麼要轉換爲無符號字節的原因。 – blackcompe

+0

非常感謝你:) –

0

喜歡的東西

  String x = "2A"; 
    int intValue = Integer.parseInt(x, 16); 
    byte b = (byte) intValue; 

9E是太大字節但因爲它相當於大於128的值,一個字節可以容納。

一個無符號字節可容納0-255但Java只有簽署了可容納-128到127所以你必須適當地映射自己

+0

從'int'到'byte'的強制轉換可能會截斷一個非常大的值,不適合單個字節。包括首先測試整數值並使用掩碼來捕獲最低位字節的斷言將是更爲理智的選擇。 – seh

+0

爲什麼downvoted ?? –

+0

我已經添加,作爲編輯以及 –

-1

您是否嘗試過的範圍字節下面的代碼。

String st = "9e"; 
byte [] value = st.getBytes(); 
+0

是的..不工作 –

1

您是否嘗試過使用String.getBytes()?它需要一個字符串並將其輸出爲byte[]。希望有所幫助。

+0

我已經試過.. ..沒有多大幫助。 –

相關問題