2011-09-21 48 views
4

我在這裏遇到了一些問題..我正在使用以下代碼在我的應用程序中生成uuid。如何將UUID存儲爲int

- (NSString *)GetUUID 
{ 
    CFUUIDRef theUUID = CFUUIDCreate(NULL); 
    CFStringRef string = CFUUIDCreateString(NULL, theUUID); 
    CFRelease(theUUID); 
    return [(NSString *)string autorelease]; 
} 

此代碼返回一個NSString對象返回。現在我想將生成的UUID存儲爲unsigned int。任何建議,請如何在這裏做到這一點。謝謝。

+1

您不能將'UUID'存儲爲'unsigned int'。前者是128位寬,後者在iPhone上只有32位寬。它只是不適合。如果您更多地分享您爲什麼要這樣做,我們可能會提供幫助。 –

+1

我想以數字形式存儲uuid。像一個整數而不是字符串。因爲花費太多時間以字符串形式進行搜索和比較。是否有可能.. – Hadi

+0

不,這是不可能的。而一個GUID已經是數字 - 只是不要將其轉換爲字符串。 –

回答

7

根據Wikipedia page,UUID長度爲128位。您可以使用的最大的int值是64位。因此,我會說你不能將它存儲在int中,因爲沒有空間。

+0

字符串在搜索和比較我的服務器時花費了太多時間。是否有可能適應任何其他類型.. – Hadi

+0

我相信它是。你可以創建一個包含UUID部分的結構,然後編寫比較函數來處理它們。不過,這取決於你正在嘗試做什麼。您的文章標記爲iPhone,但您正在討論服務器。你如何比較它們? – LandonSchropp

+0

我正在使用NSString在iPhone上生成UUID並將它們保存在數據庫中,然後將它們上傳到服務器。如果我必須獲取該數據,我會從手機發送相關的UUID。這是需要時間,所以我選擇了整數,但我仍然認爲我會用NSString .. – Hadi

0

轉換UUID到String的使用.UUIDString

採取串的.hash財產。

強制轉換爲int。

int numericFormUUID = (int)UUIDString.hash;


注:衝突是可能的,一如既往地與散列。兩個用戶可能會在這裏得到相同的值,而UUID是唯一的。