我正在尝试将字符串转换为字节,但我变为NumberFormatException
。
String s = "SYNC";
Byte b = Byte.valueOf(s);
System.out.println(b);
答案 0 :(得分:2)
String example = "This is an example";
byte[] bytes = example.getBytes();
答案 1 :(得分:0)
尝试使用.getBytes()
String s = "SYNC";
byte[] lst = s.getBytes();
for(byte b : lst ){
System.out.println(b);
}
如果您要查找的是给定字符串中的单个字符,则可能需要使用.charAt()
。 (或者您可以使用(char)
简单地将字节转换为字符。)
System.out.println(s.charAt(0)); //Prints first character from given string
答案 2 :(得分:0)
字符串只能转换为字节序列。
更多内容正如文档所说,字符串中的字符必须都是十进制数字或参数被解释为表示带符号的十进制字节,如java.lang.Byte
的API所示。
返回一个Byte对象,该对象包含指定String给出的值。 该参数被解释为表示带符号的十进制字节, 就好像这个论点被赋予了 parseByte(java.lang.String)方法。结果是一个Byte对象 表示字符串指定的字节值。
如下所示,
String s = "SYNC";
byte[] b = s.getBytes();
答案 3 :(得分:0)
该数字必须在字节范围内,否则将抛出NumberFormatException。
byte[] bytes = s.getBytes();
试试这个:
答案 4 :(得分:0)
java中的字节范围[-128; 127]。编码为ASCII字符的“SYNC”字符串值为83,89,78,67。 你怎么不把4个值的序列转换成1个值?
调用序列:Byte.valueOf(str)=> Byte.parseByte(str,10)=> Integer.parseInt(str,10)
因此,您尝试使用字符串作为基数10。此字符串中的所有字符都大于10(此基数的最大值),因此将抛出NumberFormatException。
如果字符串中的所有字符都有效,则为10个字符。如字符串“546”,paseInt将正确完成。但是parseByte会检查字节范围[-127:128]。如果值不在NumberFormatException范围内。