java - 为什么 Java 会抛出 NumberFormatException

标签 java exception

将字符串解析为字节时出现异常

String Str ="9B7D2C34A366BF890C730641E6CECF6F";

String [] st=Str.split("(?<=\\G.{2})");

byte[]bytes = new byte[st.length];
for (int i = 0; i <st.length; i++) {
 bytes[i] = Byte.parseByte(st[i]);
}

最佳答案

这是因为默认解析方法需要十进制格式的数字,要解析十六进制数字,请使用此 parse :

Byte.parseByte(st[i], 16);

其中 16 是解析的基数。

至于你的评论,你是对的。 Byte 的最大值为 0x7F。因此,您可以将其解析为 int 并与 0xff 执行二进制 AND 运算以获取 LSB,即您的字节:

bytes[i] = Integer.parseInt(st[i], 16) & 0xFF;

关于java - 为什么 Java 会抛出 NumberFormatException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6658388/

相关文章:

java - 当我旋转 Android 手机时,Fragment 中的自定义 ListView 就会出现

java - 如何在浏览器中显示来自byte[]流的pdf?

java - “Thinking in Scala"如果我有 Java/C++ 背景?

c++ - 在线程函数中处理异常

c++ - 为什么 "non-standard syntax; use ' &' to create a pointer to member"在 CTOR 中使用线程?

java - 如何使用 JAXB 使类字段成为标签名称?

java - 在 Java EE 6 应用程序(数据库/文件系统)中存储大量文件的最佳方式

c++ - 抛出一个 boost::shared_ptr< customException>

java - .NoClassDefFoundError 尝试使用 pdfBox 时

java.sql.SQLException :[SQLITE_ERROR] SQL error or missing database (near "=":syntax error) 异常