2012-02-13 3 views
1

"hello"와 같은 문자열을 가진 NSString이 있습니다.Objective-C에서 NSString을 HEX String으로 변환하는 방법은 무엇입니까?

이제 문자열을 16 진수 문자열을 나타내는 다른 NSString 객체로 변환하고 싶습니다. 그렇게하는 방법 ?

+1

[여기 있습니다] (http://stackoverflow.com/questions/3056757/how-to-convert-an-nsstring-to-hex-values) – Alexander

+0

질문을 게시하기 전에 Stackoverflow를 검색하십시오 . –

+0

나중에 나는 할 수 있었다, 나는 적당한 것을 얻는다, –

답변

6

흠 - 떨어져 명백한에서 다른 곳에서 찾을 수있는 - 방법 같은 것에 대해이 최적화

48656c6c6f20576f726c64 

같은 출력을 제공한다

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); 

이에게 연습 문제로 남겨 독자 :) :)

+0

그것은 나를 위해 너무나 좋다, 내가이 과정에 관해 읽을 수있는 장소를 안내 할 것이다. –

+1

나는 농담 만하고 있었다. 더 진지하게 - 다른 예제를보고 싶습니다. 스택 오버 플로우는 그들에게 '어떻게 변환 - 앤드 - 스트링에서 헥스 값으로'가 공정한 출발인지와 함께 나타납니다. 둘째 - snprintf 및/또는 stringWithFormat을 읽고 '% x'및 '% X'포맷터를 구체적으로 살펴보고 싶습니다. 그들은 바이트를 가져 와서 16 진수 값으로 변환합니다. 문자열에 대한 반복은 다음 과제입니다. 그러나 위에서 사용 된 'str cStringUsingEncoding ..'을 사용하여 문자열을 바이트 배열로 바꿀 수 있습니다. 이 작업을 하나씩 수행하고 변경 가능한 문자열에 16 진수를 추가하면 정상적인 해결책을 얻게됩니다. –

+0

당신은 이것이 나쁜 해결책이라고 말하고 있습니까? 다른 답변은 어떻게 더 좋습니까, 도와주세요. – carbonr

관련 문제