【发布时间】:2019-03-24 01:10:11
【问题描述】:
我正在开发一个通过 TCP 发送一些数据的嵌入式系统。该系统是基于 ARM 的,其代码是用 C 语言编写的。 在 C 端,我有一个 char(或无符号字节,即 uint8_t)数组,它表示一些编码数据:
char buffer[BUFFER_SIZE] = {0, 11, 34,176,255}; // for example.
这个缓冲区将通过 TCP/IP 协议发送到服务器,使用一个名为 SIM800 的流行 GPRS 模块。微控制器和 SIM800 之间的连接是 UART,即标准串行通信。我可以发送 uint8_t 或 char 数组。在 C 世界中没有什么不同。
在服务器端,存在一些接收和解析这个数组的 Java 服务。
问题是:在 C 语言中,uint8_t 和 char 数据类型在某种程度上是相同的,即 0 -> 255 等于整个 ASCII 表。但据我所知,在服务器上并非如此。在 Java 中,byte 数据类型本质上是有符号的,其范围是从 -128 到 127。此外,从 128 到 255 的扩展 ASCII 字符在某种程度上是非标准的,并且因系统而异。
Java 服务以 String 形式接收数据,然后转换为字节数组。
我很困惑。如果我将上述数组发送到服务器会发生什么。 Java服务可以重新解释它吗?
【问题讨论】:
-
您很可能需要将其读取为
char的数组,而不是byte的数组。不过不确定您的 Java 服务是如何实现的。