2014-03-26 38 views
1

我目前正在開發一個Objective C程序,它接收以「U + 0008」字符串形式輸入的UTF-8字符。這些字符串是NSString類型的。現在我需要將表示此字符的字符串轉換爲相應的UniChar(0x0008)。將UTF-8字符串轉換爲整數值/ UniChar(目標C)

你知道這樣做的優雅方式嗎?

謝謝! 佩德羅

+0

爲什麼你收到他們作爲一個字符串? – Wain

回答

1

如果你有形式@"U+xxxx"NSString其中X是十六進制數字然後下面有兩種方式獲得的價值,在旁觀者的眼中的「優雅」各是:

a)使用NSScanner。可以使用方法scanString:intoString檢查U+,方法scanHexInt:讀取十六進制值,並使用方法isAtEnd檢查十六進制值後面什麼也沒有。此方法不會將十六進制數限制爲最多四位數。使用sscanfstrtol。這些是C級API,您可以使用UTF8StringNSString獲取C字符串。使用scanf,您可以檢查U+,並在一行中以十六進制數字讀取設定的最大位數 - 如果這是您對「優雅」的定義。然而,檢查所有輸入消耗需要一點思考。

有許多其他方法可以做到這一點,從roll-your-own到使用正則表達式(NSRegularExpression)來檢查格式,並一次性提取4個十六進制數字以準備轉換爲整數。

注意,如果你看到4個十六進制數字,那麼你有一個16位的值,比UTF-8更像UTF-16。