【发布时间】:2016-02-23 21:41:36
【问题描述】:
我的代码旨在提取 4 字节消息中的两个中间字节,然后附加两个中间字节以形成一个 16 位无符号整数。不幸的是,我遇到了 BitConverter.ToUint16 的问题 - 我的代码似乎无法正常使用它。
我在下面附上了代码和相关局部变量的图像。
在这个特定示例中,中心字节是十进制的“10”和“152”。在二进制中,它们是 00001010 和 10011000。这意味着 uint16 (numberIn) 应该是 0000101010011000 的十进制表示,即 2712。不幸的是,程序找到的值是 38922。
发生了什么事?!
【问题讨论】:
-
38922 是二进制 1001100000001010。将其与您的“预期”值进行比较。你注意到什么了吗?现在去阅读wikipedia article on endianness。