2012-02-13 82 views
1

我有一個像「你好」字符串的NSString。如何將NSString轉換爲Objective-C中的HEX字符串?

現在我想將字符串轉換爲另一個顯示十六進制字符串的NSString對象。怎麼做 ?

+1

[這裏你去](http://stackoverflow.com/questions/3056757/how-to-convert-an-nsstring-to-hex-values) – Alexander 2012-02-13 08:04:39

+0

請在發佈您的問題之前搜索Stackoverflow 。 – 2012-02-13 08:43:13

+0

雅我做了,但我可以,噸得到適當的 – 2012-02-13 08:54:24

回答

6

嗯 - 除了顯而易見的,可以在其他地方發現 - 怎麼是這樣的:

NSString * str = @"Hello World"; 

    NSString * hexStr = [NSString stringWithFormat:@"%@", 
         [NSData dataWithBytes:[str cStringUsingEncoding:NSUTF8StringEncoding] 
             length:strlen([str cStringUsingEncoding:NSUTF8StringEncoding])]]; 

    for(NSString * toRemove in [NSArray arrayWithObjects:@"<", @">", @" ", nil]) 
     hexStr = [hexStr stringByReplacingOccurrencesOfString:toRemove withString:@""]; 

    NSLog(@"%@", hexStr); 

應該給像

48656c6c6f20576f726c64 

優化這樣的輸出留作一個練習讀者:) :)

+0

這對我來說太好了,你會指導我一些地方,我可以讀到這個過程。 – 2012-02-13 10:04:52

+1

我只是在開玩笑。更嚴重的是 - 你想看看其他的例子;堆棧溢出teems'如何將nsstring轉換爲十六進制值'是一個公平的開始)。其次 - 您想了解snprintf和/或stringWithFormat,並特別查看'%x'和'%X'格式化程序。他們需要一個字節並將其轉換爲十六進制值。循環播放是您的下一個挑戰。但是你可以用上面使用的'str cStringUsingEncoding ..'把一個字符串變成一個字節數組。一個一個地做,爲一個可變字符串添加一個十六進制,你應該得到一個正常的解決方案。 – 2012-02-13 10:35:56

+0

你是說這是一個不好的解決方案?其他答案如何更好,請幫助 – carbonr 2013-08-27 15:37:55