【发布时间】:2013-12-01 07:43:32
【问题描述】:
假设我有一个用 uint8_t 填充的缓冲区,就像我通过执行得到的一样
uint8_t buffer[4];
[inputStream read:buffer maxLength:4];
再次,假设我知道这个缓冲区现在包含两个大端格式的有符号 16 位整数(即使缓冲区的类型是 uint8_t)。 我将如何获得每个数字的结果?
我认为您必须使用按位运算符,并且您还必须从无符号转换为有符号,但我似乎无法完全弄清楚。
只有 uint8_t 值的类似示例如下所示:
uint8_t buffer[2];
[inputStream read:buffer maxLength:2];
uint8_t value1 = buffer[0];
uint8_t value2 = buffer[1];
任何帮助将不胜感激,因为我确信这是一个相对简单的问题。
更新: 为了进一步澄清问题: 我提前知道我收到了 0 到 255 的数字,即使它们是 16 位签名的。所以收到的任何负数都是不正确的,应该向上移动 127,以说明有符号/无符号的差异。
【问题讨论】:
标签: ios objective-c c