2011-11-16 25 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

我已经试过.. ..没有多大帮助。 –

相关问题