如何在uint_8数组中存储负数

How to store negative number in a uint_8 array

提问人:Adi_Hsiao_0410 提问时间:10/27/2022 更新时间:10/27/2022 访问量:68

问:

我正在尝试使用 BLE 将一些数据从 STM32 板发送到 Raspberry Pi 3B 板。但是,BLE API 的“写入”功能仅支持uint8_t数组传输,但我需要发送的数据包括 42 和 -283 等正负数。原始值存储在int16_t变量中,我需要在传输它们之前将它们解析到 uint8_t 数组中。我只想将一个int16_t放入数组中,因此如果需要,可以在数组中使用多个插槽。 例如,283 可以存储为 1,1B。

有谁知道该怎么做?我想我可以用 >>8 来做到这一点,但是负数呢?

C++ 数组字节 uint8t

评论

5赞 Sam Varshavchik 10/27/2022
您是否熟悉 2-s 补码算术,它用于表示所有计算机中的有符号数字?你了解它是如何工作的,以及如何使用它吗?
0赞 Adi_Hsiao_0410 10/27/2022
@SamVarshavchik 你的意思是在二进制数字中翻转 0 和 1 吗?如果是这样,那么我想我必须在收到后再次解析数字(翻转)?
4赞 Daniel Langr 10/27/2022
您的问题基本上是关于如何序列化数据。C++中最安全的“手动”方式可能是使用.更好的是,使用任何像样的序列化库。memcpy
0赞 Sam Varshavchik 10/28/2022
不,2-s 补码不是关于 ,任何地方。这就是计算机表示负数的方式。如果您熟悉 2-s 补码算术以及它如何转换为表示整数值,无论它们是 8 位、16 位、32 位还是 64 位,那么您需要确切地澄清您的具体问题是什么。如果您不熟悉这些主题,您可以在许多关于计算机科学和编程的入门教科书中找到它们的解释和讨论。不幸的是,Stackoverflow 不能替代教科书,我们在这里只回答具体问题。flipping the 0 and 1

答: 暂无答案