1

快速提问,当我使用编码器和解码器时,我有如下一行...

//.H File
@property uint64           docGroup;            //** declared in interface

//.M file
[aCoder encodeInt64:_docGroup forKey:@"docGroup"];

由于我使用的是无符号 int64,它会正确存储所有“64”位吗?恐怕它会留下最后一点。我很好奇这种情况下的行为是什么。有人知道吗?

我找不到函数 encodeUnsignedInt64,如果有请告诉我。

4

2 回答 2

1

如果我在 C 中理解有符号到无符号转换的答案 - 它总是安全的吗?正确地,转换uint64为有符号int64通常取决于实现,但是在具有负数的二进制补码表示的体系结构上,转换不会改变位模式。

因此,从uint64toint64和 back to的转换uint64总是产生原始值。

于 2013-05-16T20:04:58.023 回答
1

是的,应该没问题;有符号和无符号 64 位整数都使用全部 64 位。

使用(在调试器中)进行测试:

uint64_t u64 = 0xfedcba9876543210ULL;
int64_t i64 = (int64_t)u64;
u64 = (uint64_t)i64;
于 2013-05-16T19:53:30.713 回答