我想将UUID(NSUUID,唯一字符串,128位)转换为数字并将其存储在SQLite中(因为主键使用Core Data)。
我该怎么做?
答案 0 :(得分:3)
似乎没有太多关于你正在寻找什么的互联网,所以我猜你想做的事情可能不是最聪明的事情。
我真正能找到的是:
其他一切似乎都在谈论文本而不是数字
根据Drew的评论,第二个链接现在已经死了。但是我在回路机器上找到了它:
Wayback machine version of: [sqlite] 128-bit numbers
讨论的关键部分是:
On Tue,2005-05-03 at 17:52 -0400,Christopher Petrilli写道:
我想知道是否有128位数的可用性 考虑?我问的原因是我有一个应用程序 需要存储128位的IPv6地址。现在,我是 将它们存储在2个64位字段中,但这显然使其复杂化 查询了很多。
将字段声明为CLOB或TEXT并以此方式存储数字。您 可以在TEXT列中存储您想要的任何大小编号。你不能 如果它们大于64位,则对它们进行算术运算。你需要吗? 对你的IPv6地址进行算术运算?
和
SQLite允许您对BLOB进行范围比较。它使用memcmp()来实现 进行比较。只要您以一种格式插入数据即可 可以使用memcmp()正确比较你应该没问题。
答案 1 :(得分:0)
Core Data没有主键概念,也不一定使用SQLite作为后备存储,所以这是不可能的。
如果要将UUID字符串转换为二进制,请使用
uuid_t uuid;
NSUUID *uuidString = [[[NSUUID alloc] initWithUUIDString:@"68753A44-4D6F-1226-9C60-0050E4C00067"] autorelease];
[uuidString getUUIDBytes:uuid];
答案 2 :(得分:0)
binary(128)数据类型将允许使用128位值。