Ios 处理16位无符号整数(uint16_t)

Ios 处理16位无符号整数(uint16_t),ios,objective-c,cocoa-touch,unsigned-integer,Ios,Objective C,Cocoa Touch,Unsigned Integer,我想生成一个16位无符号整数uint16\t,它可以表示以下内容: 前两位数字表示某些版本,如1、2、3等。 接下来代表另一个数字的3位数字可能是123、345、071等。 最后11位代表数字T234、T566等。 我们如何使用objective C实现这一点。我想稍后解析这些数据,以获取这些组件。请告知。我认为您误解了uint16\u t的含义。它并不意味着一个16位的十进制数,它是介于0和9999999999999之间的任何数字。它表示可以用16位表示的无符号数。该值的小数范围为0到6553

我想生成一个16位无符号整数uint16\t,它可以表示以下内容:

前两位数字表示某些版本,如1、2、3等。 接下来代表另一个数字的3位数字可能是123、345、071等。 最后11位代表数字T234、T566等。
我们如何使用objective C实现这一点。我想稍后解析这些数据,以获取这些组件。请告知。

我认为您误解了uint16\u t的含义。它并不意味着一个16位的十进制数,它是介于0和9999999999999之间的任何数字。它表示可以用16位表示的无符号数。该值的小数范围为0到65535。如果你真的想存储你正在谈论的数字,你需要52位。你也会使事情变得非常困难,因为你不容易从52位序列中提取前两位十进制数字;你必须把这个数字当作一个十进制值,然后模数为100,你不能只说它是1到8位

有一种称为二进制编码十进制的方案可以帮助您。取64位的值uint64_t,在这个值中,位1-7是最高127的版本,位8-17是第二个数字,最高1023,位18-63是第三个数字,这46位可以存储最高70368744177663的数字


所有这些在技术上都是可能的,但你真的会让事情变得困难。看起来您正在存储一个版本、次要版本和内部版本号,大多数人都是使用字符串而不是小数来存储的。您是指位吗?两位给出的范围是0-3,而三位给出的范围是0-7。因此,无法将123或071等值存储在3位中。Objective-C允许使用与C类似的位运算符。使用它,可以将18位十进制数字打包为64位数字