Java 将字符串转换为字节,然后插入字节数组
我有一个十六进制字符串,st=“9e”。我需要将其转换为字节并将其插入字节数组。但我不能从字符串转换到字节。我使用了一些技巧,比如 1) 字节.valueOf(str); 2) 新字节(str); 3) 尝试将“0X”附加到str,然后转换为字节。 这些都是错误的 你能告诉我如何从字符串转换到字节吗 类似于Java 将字符串转换为字节,然后插入字节数组,java,string,casting,bytearray,byte,Java,String,Casting,Bytearray,Byte,我有一个十六进制字符串,st=“9e”。我需要将其转换为字节并将其插入字节数组。但我不能从字符串转换到字节。我使用了一些技巧,比如 1) 字节.valueOf(str); 2) 新字节(str); 3) 尝试将“0X”附加到str,然后转换为字节。 这些都是错误的 你能告诉我如何从字符串转换到字节吗 类似于 String x = "2A"; int intValue = Integer.parseInt(x, 16); byte b = (byte) i
String x = "2A";
int intValue = Integer.parseInt(x, 16);
byte b = (byte) intValue;
9e对于字节来说太大,因为一个字节可以容纳的值大于128
一个无符号字节可以容纳0-255,但java只有一个有符号字节可以容纳-128到127,因此您必须自己适当地映射范围)您尝试过下面的代码吗
String st = "9e";
byte [] value = st.getBytes();
你试过使用吗?它接收字符串并将其作为
字节[]
输出。希望这能有所帮助。您可能正在寻找以下内容:
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;
}
}
import java.util.*;
导入java.lang.*;
班长
{
公共静态void main(字符串[]args)
{
字符串hex=“9e”;
int i=整数.parseInt(十六进制,16);
System.out.println(Arrays.toString(intToBytes(i));
}
专用静态字节[]整数字节(整数n)
{
字节[]字节=新字节[4];
对于(int i=0;i<4;i++)
{
字节[i]=(字节)(n | 0);
n>>=8;
}
返回字节;
}
}
由于字节是有符号的整数类型,您需要将它们转换为无符号值。可能重复下行表决,因为一个简单的谷歌搜索会得到正确的答案。您仍然感到困惑的所有人都给了您直截了当的ans。我不认为OP是在寻找字节数组。她在寻找一个简单的旁白:有多少人不理解你的问题,也许你应该考虑清楚一点。停止投票。人们完全按照你的要求回答,你没有正确表达自己不是他们的错从
int
到byte
的转换可能会截断一个大得多的值,而这个值不适合单个字节。包括一个先测试整数值的断言,并使用掩码只捕获最低顺序的字节,这将是一个更明智的选择。。但答案是-98。我需要在数组中精确地放入9e,这正是我说转换为无符号字节的原因。