【问题标题】:Convert iPhone unique identifier to integer将 iPhone 唯一标识符转换为整数
【发布时间】:2011-09-30 17:52:12
【问题描述】:

我创建了一个 Web 服务,它获取一个整数作为电话的唯一标识符。后来,我意识到 iPhone UID 是一个格式为 5DE31FA12-XXXXX-XXXXX-XXXXXXX 的 NSstring。所以我想将此值转换为整数。

这是我获取 NSString 格式的 UID 的方式。

CFUUIDRef theUUID = CFUUIDCreate(NULL);
CFStringRef string = CFUUIDCreateString(NULL, theUUID);
CFRelease(theUUID);
NSString *theUID = (NSString *)string;

如何将 NSString *theUID 转换为整数值,以便发送到 web 服务?

编辑:正如 CocoaFu 正确提到的那样,不可能将该值放入 int 中。我能否以某种方式将其转换为格式为“dddddddddddddddddddddddddddd”(其中 d = 0-9)的 NSString 以便对其进行哈希处理然后发送?现在无法更改网络服务。

【问题讨论】:

  • 一个 uuid 不能容纳在单个整数中!
  • 要么改变你的网络服务,要么做一个新的
  • 有 36 ^ 26 = 3 x 10^40 个可能的 UID。即使是 long long 整数也只能保存大约 1 x 10^19 的值。

标签: iphone ios cocoa-touch uuid uniqueidentifier


【解决方案1】:

最大整数为 8 字节或 64 位。您显示的 UUID 有 26 个十六进制字符,即 104 位。它只是不适合整数。使用字符串。

CFUUIDCreate 返回一个包含 32 个十六进制字符的字符串,即 128 位或 16 个字节。忽略“-”字符,它们只是为了人类可读性。这是一个例子 CFUUIDCreate: BDFC3FE6-3A5E-48C0-B18D-E42B8E275428

【讨论】:

    【解决方案2】:

    UDID 不适合 int。您列出的格式是模拟器为您提供的格式。设备 UDID 是 40 个字符长的字母数字。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2010-11-23
      • 2018-11-24
      • 1970-01-01
      • 2013-02-12
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多