0

我是java的初学者我正在从串口读取数据,我已经将数据存储在字符串数组数据中,数据长度为24字节。

我作为输出得到的数据:12120814330006050.0

data 还包含字符串中的十六进制字符,我想读取字符串的第一个字符。我已经做好了:

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

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

谢谢您的回复

4

3 回答 3

3

您可以从字符串中获取的单个字符

str.getChar(0);

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

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

Integer.parseInt(str,16);
于 2008-12-12T09:19:09.903 回答
1

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

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

于 2008-12-12T09:47:57.533 回答
0

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

所以:

  1. 检查字符串的内容。
  2. 检查子字符串的内容。
于 2008-12-12T09:19:29.853 回答