使用16位无符号整数(uint16_t)

时间:2013-07-22 23:19:49

标签: ios objective-c cocoa-touch unsigned-integer

我想生成一个16位无符号整数(uint16_t),它可以表示以下内容:

  1. 前两位代表某些版本,如1,2,3等。
  2. 表示另一个数字的下三个数字可以是123,345,071等。
  3. 最后11位代表数字T234,T566等。
  4. 我们如何使用目标C来做到这一点。我想稍后解析这些数据以获取这些组件。请指教。

1 个答案:

答案 0 :(得分:5)

我认为你误解了uint16_t的含义。它并不意味着16位十进制数(这是0到9,999,999,999,999,999之间的任何数字)。它表示可以使用16位表示的无符号数。这样的值的范围是十进制的0到65535。如果你真的想存储你正在谈论的数字,你需要52位。你也可能为自己制造非常困难的东西,因为你不能轻易地从那个52位序列中提取前两个十进制数字;您必须将数字视为十进制值,然后将模数设为100,您不能仅将其称为1到8位。

有一个名为Binary Coded Decimal的方案可以帮助你。您将采用64位值(uint64_t),并且您可以说在此值内,位1-7是版本(可能是最多127的值),位8-17是第二个数字(可能是值高达1023)和位18-63可能是你的第三个数字(这46位可以存储一个高达70,368,744,177,663的数字。

这一切在技术上都是可行的,但你真的会为自己制造困难。看起来您正在存储版本,次要版本和内部版本号,大多数人使用字符串而非小数

来执行此操作