java中字符串到字节的转换
我在将java中字符串到字节的转换,java,string,byte,Java,String,Byte,我在将字符串(包含十六进制值)转换为字节时遇到问题。就像下面的代码 String hexaString = "0xA1"; byte hexaByte = (byte)hexaString; 无法像此代码那样从字符串转换为字节(获取错误:无法从字符串转换为字节) 但我能做到这一点 byte hexaByte = (byte)0xA1; //this is giving output as -95 任何人请指导我如何做我喜欢的第一种方法(这也输出值-95)。因为,我将从db获得的最后两位数字,
字符串
(包含十六进制值)转换为字节
时遇到问题。就像下面的代码
String hexaString = "0xA1";
byte hexaByte = (byte)hexaString;
无法像此代码那样从字符串转换为字节(获取错误:无法从字符串转换为字节
)
但我能做到这一点
byte hexaByte = (byte)0xA1; //this is giving output as -95
任何人请指导我如何做我喜欢的第一种方法(这也输出值-95)。因为,我将从db获得的最后两位数字,我需要将其转换为十六进制(追加0x)。然后我应该以字节值的形式发送给客户机
提前谢谢 您可以执行以下操作:
byte hexaByte = Byte.parseByte("1A", 16);
其中16是基数(系统计数的基数),但如果该数字大于127,则会导致NumberFormatException。如果需要能够使用0x前缀,
(字节)整数。解码(“0xA1”)
将做正确的事。hexaString.getBytes()?:)@Shark看起来像是OP
正在尝试将该值转换为@Shark,hexaString.getBytes()的完整副本,这将给出字节数组。我希望像Reimeus saidI一样将值转换为一个整体来理解这个问题,但它解决了无法将字符串转换为字节的问题。在强制转换为整数之前,请尝试使用无符号字节/整数。我回家后会找出一些处理字节的Java代码宝藏,除非你在我之前解决:)@Reimeus谢谢你帮(他)解决问题。我用“A1”值尝试了这个。这是一个例外,因为十六进制中的A1是161进制,高于127。你可以试试:byte hexaByte=(byte)Integer.parseInt(“A1”,16);但它返回了错误的值-需要将其解析为未签名。