如何解决在无符号char数组中存储0
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 举报,一经查实,本站将立刻删除。