java - 解析在 Java 中通过 TCP 发送的字节数组

标签 java c arrays tcp byte

我正在开发一个嵌入式系统,它通过 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_tchar 数组。在 C 世界中没有什么不同。

在服务器端,存在一些接收和解析这个数组的 Java 服务。

问题是:在 C 语言中,uint8_tchar 数据类型在某种程度上是相同的,即 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/

相关文章:

c++ - TRUE 和 FALSE 宏的奇怪定义

c++ - 为什么我在 C++ 中收到指针数组的 "pointer being freed was not allocated"错误?

java - 在 Java 中检索 PDF 签名表单字段的坐标

java:嵌套类定义 - 名称是否冲突? (OCPJP)

java - Saga 条目表/Sagas 集合保持为空

c - *(&ptr) 和 *(ptr) 之间有什么区别

java - Apache Felix OSGI 中不存在软件包

c - 使用带有arduino的两个超声波流量计

php - 将 PHP 数组中的相同项目分组并进行计数

javascript - 对象在插入数组后意外被修改