2012-01-13 30 views
1

例如:的NSString *天= [[NSString的stringWithFormat:@ 「السبت」];和我認爲該字符串以十六進制表示的的NSString HEX

表示是這樣的:%C7%E1%D3%C8%CA (windows-1256編碼)

我想要的是如何將阿拉伯字符串轉換爲十六進制像這樣。

回答

2

一種可能的解決方案:

NSString *day [email protected]"السبت"; 
NSData *strData = [day dataUsingEncoding:NSWindowsCP1254StringEncoding]; 
NSMutableString *mut = [NSMutableString string]; 
int i; 
for (i = 0; i < [strData length]; i++) 
{ 
    [mut appendFormat:@"%%%02X", ((char *)[strData bytes])[i]]; 
} 

mut將包含一天中的十六進制編碼表示。

+0

謝謝你的回答。 – NouNou 2012-01-13 20:51:54

+0

沒問題。您可以隨時接受/ upvote。 – 2012-01-13 20:53:51

+1

也許...我們沒有足夠的信息知道如何格式化00-0f,如果它們應該是零填充或不填充,如果是這樣的格式應該是@「%%% 0.2X」 – 2012-01-13 20:56:33

0

類似於[day stringByAddingPercentEscapesUsingEncoding:@"whatever"]

+0

謝謝你,我會試試這個。 – NouNou 2012-01-13 20:43:42

+0

它不會正確地轉義字符......另一種方法是使用CoreFoundation函數,但這有點複雜。我的解決方案將轉義所有阿拉伯字符 – 2012-01-13 20:46:42

+0

@ Michael Krelin @ H2CO3它工作正常。 – NouNou 2012-01-13 20:54:16