快速提问,当我使用编码器和解码器时,我有一条如下所示的行......
//.H File
@property uint64 docGroup; //** declared in interface
//.M file
[aCoder encodeInt64:_docGroup forKey:@"docGroup"];
因为我使用的是无符号的int64,它会正确存储所有'64'位吗?我担心它会落后于最后一点。我很好奇这种情况下的行为是什么。有人知道吗?
我找不到函数encodeUnsignedInt64,如果有的话请告诉我。
答案 0 :(得分:1)
使用(在调试器中)进行测试:
uint64_t u64 = 0xfedcba9876543210ULL;
int64_t i64 = (int64_t)u64;
u64 = (uint64_t)i64;
答案 1 :(得分:1)
如果我正确理解Signed to unsigned conversion in C - is it always safe?的答案,将uint64
转换为签名int64
通常取决于实施,
但在具有负数的二进制补码表示的体系结构中,转换不会改变位模式。
因此,从uint64
到int64
并返回uint64
的转换始终会产生原始值。