2011-09-30 63 views
0

我已經創建了一個Web服務,該服務獲取一個整數作爲電話的唯一標識符。後來,我意識到iPhone UID是這種格式的NSstring:5DE31FA12-XXXXX-XXXXX-XXXXXXX。所以我想將這個值轉換爲一個整數。將iPhone唯一標識符轉換爲整數

這裏是我得到NSString格式的UID的方式。

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

如何將NSString * theUID轉換爲整數值,以便將其發送到webservice?

編輯:正如CocoaFu正確提到的那樣,不可能將該值放入int中。我可以以某種方式將它轉換爲一個格式爲「ddddddddddddddddddddddddddddddd」(其中d = 0-9)的NSString,以散列它然後發送它?現在不可能改變webservice。

+0

一個uuid不能放在一個整數中! – Joe

+0

或者更改您的網絡服務或創建新的服務 – meggar

+1

有36^26 = 3 x 10^40個可能的UID。即使是很長的整數也只能保持1 x 10^19左右的值。 – Luke

回答

2

最大的整數是8個字節或64位。你顯示的UUID有26個十六進制字符,它是104位。它只是不適合一個整數。使用字符串。

CFUUIDCreate返回帶有32位十六進制字符的字符串,即128位或16字節。忽略' - '字符,它們只是爲了人類的可讀性。這裏是一個例子,從 CFUUIDCreate: BDFC3FE6-3A5E-48C0-B18D-E42B8E275428

1

UDID將不適合int。你列出的格式是模擬器給你的。設備UDID是長度爲40個字符的字母數字。