http://user:password@host/...
java.lang.NumberFormatException:对于输入字符串:" 2c010000"
如何在文件中保存此值?
答案 0 :(得分:3)
当你给String.format("%02x",...)
时,你告诉编译器给你一个十六进制数字。
但是你试图将其解析为十进制数。因此问题。
你应该做其中任何一个,
file.write(Integer.parseInt(String.format("%02d", Integer.reverseBytes(str)), 10));
,或者
file.write(Integer.parseInt(String.format("%02x", Integer.reverseBytes(str)), 16));
答案 1 :(得分:0)
您可以跳过格式化和解析,直接进行此实现:
file.write(Integer.reverseBytes(str));
问题是您将数字打印为十六进制,但是您将其解析为十进制数。要将数字解析为十六进制,请将parseInt
的最后一个参数传递16:
file.write(Integer.parseInt(String.format("%02x", Integer.reverseBytes(str)), 16));
// ^^
注意:这可能不是你想要的:如果要写所有四个字节而不是MSB,请执行以下操作:
byte[] bytes = ByteBuffer
.allocate(4)
.putInt(Integer.reverseBytes(str))
.array();
file.write(bytes);