如何存储128位值?

时间:2013-09-06 21:29:26

标签: ios objective-c core-data

我想将UU​​ID(NSUUID,唯一字符串,128位)转换为数字并将其存储在SQLite中(因为主键使用Core Data)。

我该怎么做?

3 个答案:

答案 0 :(得分:3)

似乎没有太多关于你正在寻找什么的互联网,所以我猜你想做的事情可能不是最聪明的事情。

我真正能找到的是:

How to store 128 bit values

[sqlite] 128-bit numbers

其他一切似乎都在谈论文本而不是数字


根据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位值。