微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在无符号char数组中存储0

如何解决在无符号char数组中存储0

我有一个unsigned char数组,如下所示:

unsigned char myArr[] = {100,128,32,2,9};

由于我必须将reinterpret_cast传递给方法,因此我正在使用const char*将其隐藏到const char*中。然后,此信息通过grpc和其他应用程序发送(基于erlang的信息将其存储在erlang Bin中)。但是我观察到Erlang应用程序仅收到 > ,此后什么也没有收到。是什么原因造成的?这是字符数组中的0吗?有人可以解释如何处理0数组中的unsigned char吗?我确实读了很多答案,但没有清楚地解释我的问题。

解决方法

可能是什么原因造成的?问题是字符数组中的0?

很有可能,是

可能将指针传递给的函数之一指定为接受指向空终止字符串的参数。您的数组碰巧被null终止,因为在索引2处包含空字符,该字符是字符串终止的位置。这种函数通常只有在数组以null终止的情况下才具有明确定义的行为,因此将指针传递给可能不包含null字符的任意二进制文件将非常危险。

有人可以解释如何在无符号char数组中处理0吗?

不要将数组传递给期望空终止字符串的函数。这包括大多数格式化的输出函数和<cstring>中的大多数函数。该功能的文档应提及前提条件。

如果仅这些功能是可选的,则可以将二进制数据编码为文本格式,然后在另一端对其进行解码。 Base64 是二进制数据的常用文本编码,尽管它不一定是最佳的。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。