我想将 UUID(NSUUID,唯一字符串,128 位)转换为数字并将其存储在 SQLite 中(因为主键使用 Core Data)。
我该怎么做?
互联网上似乎没有太多东西可以满足您的需求,所以我猜想您想要做的可能不是最明智的事情。
我真正能找到的是:
其他一切似乎都在谈论文字而不是数字
根据 Drew 的评论,第二个链接现已失效。但是我在回程机上找到了它:
讨论的关键点是:
2005 年 5 月 3 日星期二 17:52 -0400,Christopher Petrilli 写道:
我想知道是否有 128 位数字的可用性 考虑过?我问的原因是我有一个应用程序 需要存储128bits的IPv6地址。此刻,我 将它们存储在 2 个 64 位字段中,但这显然使 查询很多。
将字段声明为 CLOB 或 TEXT 并以这种方式存储数字。你 可以在 TEXT 列中存储您想要的任何尺寸数字。你就是不能 如果它们大于 64 位,则对它们进行算术运算。你需要 对你的 IPv6 地址做算术?
和
SQLite 允许您对 BLOB 进行范围比较。它使用 memcmp() 来 做比较。因此,只要您以某种格式插入数据 可以使用 memcmp() 正确比较你应该没问题。
数据类型
binary(128)
将允许 128 位值。
Core Data 没有主键的概念,也不一定使用 SQLite 作为后备存储,所以这是不可能的。
当你想将 UUID 字符串转换为二进制时,使用
uuid_t uuid;
NSUUID *uuidString = [[[NSUUID alloc] initWithUUIDString:@"68753A44-4D6F-1226-9C60-0050E4C00067"] autorelease];
[uuidString getUUIDBytes:uuid];