我正在开发一个嵌入式系统,它通过 TCP 发送一些数据。这个系统是基于ARM的,它的代码是用C语言编写的。 在 C 端,我有一个 char 数组(或无符号字节,即 uint8_t),它表示一些编码数据:
char buffer[BUFFER_SIZE] = {0, 11, 34,176,255}; // for example.
此缓冲区将通过 TCP/IP 协议(protocol)发送到服务器,使用名为 SIM800 的流行 GPRS 模块。微 Controller 与SIM800之间的连接是UART,即标准串行通信。我可以发送 uint8_t 或 char 数组。在 C 世界中没有什么不同。
在服务器端,存在一些接收和解析这个数组的 Java 服务。
问题是:在 C 语言中,uint8_t 和 char 数据类型在某种程度上是相同的,即 0 -> 255 等于整个 ASCII 表。但据我所知,这在服务器上并非如此。在 Java 中,byte 数据类型本质上是有符号的,其范围是从 -128 到 127。此外,从 128 到 255 的扩展 ASCII 字符在某种程度上是非标准的,并且因系统而异。
Java 服务以字符串 形式接收数据,然后将其转换为字节数组。
我很困惑。如果我将上述数组发送到服务器会发生什么。 Java 服务可以重新解释它吗?
最佳答案
您可以在从 TCP 流中读取字节后尝试以下操作
String str = new String(bytes,
StandardCharsets.US_ASCII);
关于java - 解析在 Java 中通过 TCP 发送的字节数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52887334/