본문 바로가기

Software/iOS & Objective-C

NSString 변환 <—> NSData, char[]

항상 찾아다녔던 데이터 형변환

보고도 또 까먹고 다시 또 찾고...

잘 정리되어 있는 아래의 사이트에서 발췌 했습니다.
http://funnyrella.blogspot.kr/2014/01/94-nsstring-nsdata-char.html

NSString 변환  <—> NSData, char[]

1. NSData —> NSString
NSString *plainString = [[NSString allocinitWithData:plainData encoding:NSUTF8StringEncoding];

2. NSString —> NSData
NSData *plainData = [inputStr dataUsingEncoding:NSUTF8StringEncoding];
——————————
NSData *plainData = [NSData dataWithBytes:[inputStr UTF8Stringlength:[inputStr length]];
——————————
const char *cstr = [inputStr cStringUsingEncoding:NSUTF8StringEncoding]
NSData *data = [NSData dataWithBytes:cstr length:input.length];

! NSData to NSString returns Null?
: NSData의 값은 분명히 있는데, NSString으로 변환하고 나면 값이 nil인경우, 인코딩 옵션을 변경해 봐라….
NSString *a = [[NSString alloc] initWithBytes:[data bytes] length:[data length] encoding:NSASCIIStringEncoding];

3. NSString —> char[]
char chPtr[10];
memset(chPtr, 0sizeof(chPtr)); //기본값 초기화
[inputStr getCString:chPtr maxLength:sizeof(chPtr)  encoding:NSUTF8StringEncoding];

4. char[] —> NSString
const char chStr[10] = {'1''2''3''4''5''a''b''c''d''e'};  //할당 시 값지정
NSString * outputStr = [NSString stringWithFormat:@"%s", chStr];
NSLog(@"outputStr=[%@]“, outputStr); //outputStr=[12345abcde]

5.char[]헥사값 —> NSString
unsigned char result[10] = {'1''2''a''b''Z'22064216};
NSString* outputStr = [NSString  stringWithFormat:@"%02X %02X %02X %02X %02X %02X %02X %02X %02X %02X",
                      result[0], result[1], result[2], result[3], result[4],
                      result[5], result[6], result[7], result[8], result[9]];


반응형