如何在Java中将字符串转换为十进制

时间:2015-07-30 00:27:46

标签: java

http://user:password@host/...
  

java.lang.NumberFormatException:对于输入字符串:" 2c010000"

如何在文件中保存此值?

2 个答案:

答案 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));
//                                                                            ^^

Demo.

注意:这可能不是你想要的:如果要写所有四个字节而不是MSB,请执行以下操作:

byte[] bytes = ByteBuffer
    .allocate(4)
    .putInt(Integer.reverseBytes(str))
    .array();
file.write(bytes);