如何将数字 500,000 挤入无符号的 Short 中?

问题描述 投票:0回答:1

我知道无符号短整型有 0 - 65535 的限制。但是,我有一个设计约束,只允许数据为无符号短整型,并且我需要执行缩放,例如从 5000*(1/0.01) 变为 500,000,并通过 UDP 协议发送数据。我怎样才能实现这个目标?

我知道由于缺乏可用于无符号短数据类型的位,位移位是不可能的。有什么可行的办法吗?

c++ c windows udp
1个回答
0
投票

正如您在设计约束中提到的,您需要缩放该值以适合 16 位字段。这允许您在此字段中适应更广泛的值,但代价是您无法表示此范围内的所有整数值。

考虑到您提到的缩放因子,您可以将 500000 除以 100 得到 5000,该值就是您放入 16 位字段中的值。然后,当您在另一侧读回它时,执行相反的操作,将 5000 乘以 100,得到 500000 的值。

© www.soinside.com 2019 - 2024. All rights reserved.