我有一个十六进制字符串,st =“9e”。我需要将其转换为字节并将其插入字节数组中。但我无法从字符串转换为字节。我使用过像 1)Byte.valueOf(str); 2)新的字节(str); 3)尝试将“0X”附加到str然后转换为byte。 这些都给出了错误。
你能告诉我如何从一个字符串转换为字节。
答案 0 :(得分:1)
您是否尝试过使用String.getBytes()?它接收一个字符串并将其输出为byte[]
。希望有所帮助。
答案 1 :(得分:0)
像
这样的东西 String x = "2A";
int intValue = Integer.parseInt(x, 16);
byte b = (byte) intValue;
9e 对于字节来说太大了,因为它等于字节大于128的值,而字节可以容纳。
无符号字节可以容纳0-255但是java只有符号字节,可以容纳 -128到127 ,所以你必须自己适当地映射范围
答案 2 :(得分:-1)
答案 3 :(得分:-1)
您是否尝试过以下代码。
String st = "9e";
byte [] value = st.getBytes();
答案 4 :(得分:-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;
}
}
由于字节是有符号整数类型,因此您需要将它们转换为无符号值。