听起来这是对您很重要的位模式,而不是整数值本身.您可以将其存储为已签名 – 只需将其转换为C签名< - >无符号强制转换不强制数学正确性并仅保留位.把它扔回去使用它.
跟进问题:
通常在(Obj-)C()中是,您可以将无符号整数值存储到具有等效有符号整数类型的变量中,反之亦然.来自签名的C演员 – >使用2的补码整数时,无符号定义等同于位复制,两种类型的大小相同.走另一条路,未签名 – >签名,是“实现定义” – 实际上通常意味着一个位拷贝.铿锵GCC使用两者的位副本,但如果你想绝对确定你可以使用一个联合:
unsigned long r;long l;r = (unsigned long)l; // will always work (cast optional)// following is l = (long)r (cast optional) without "implementation defined" risk{ union { long sValue; unsigned long uValue; } tmp; tmp.uValue = r; l = tmp.sValue;}
但严重的是我怀疑有人会这样! (注意:Clang至少会将其编译为直接赋值(bit-copy).)
总结以上是内存溢出为你收集整理的cocoa – 有没有办法在核心数据中存储unsigned long?全部内容,希望文章能够帮你解决cocoa – 有没有办法在核心数据中存储unsigned long?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)