在java中将十六进制字符串转换为整数

时间:2008-12-12 09:12:04

标签: java core

我在java中打算我正在从串口读取数据并且我已将数据存储在字符串数组中,数据长度为24个字节。

我输出的数据:12120814330006050.0

数据还包含字符串中的十六进制字符我想要读取字符串的第一个字符。我做了:

String str=dispArray[i].substring(1,2);
int i= Integer.parseInt(str,16);
System.out.println("Decimal:="+ i);

但我得到NumberFormatException.plz帮我读十六进制字符。

感谢您的回复

3 个答案:

答案 0 :(得分:3)

您可以使用

从字符串中获取单个字符
str.getChar(0);

当你知道字符串在每个字符中包含十六进制值时,你不必转换每一个字符。您可以将完整的字符串放入并获取十六进制字符串的dec值。否则,您只计算1个十六进制值,并且必须与字符位置的索引号相乘。

要将其解析为十六进制值,您可以调用

Integer.parseInt(str,16);

答案 1 :(得分:1)

听起来您的数据流实际上包含二进制和文本数据的混合。您尝试将整个事物存储为字符串是非常重要的(IMO)。将其保留为二进制数据,并在需要时将适当的块转换为文本。

这可能意味着改变你首先从串口读取的方式 - 使用处理字节和字节数组而不是字符串和字符串的API。

答案 2 :(得分:0)

Java字符串是unicode - 所以字节已经使用某种编码解码(可能是UTF-8?)。

所以:

  1. 检查字符串的内容。
  2. 检查子字符串的内容。