목표 c에서 NSData를 NSString으로 변환
NSData를 NSString으로 변환합니다.이것을 하는 가장 좋은 방법은 무엇입니까?
이 코드를 사용하고 있지만 마지막 문자열이 null을 반환합니다.
NSString *str = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
NSLog(@"%@",str);
콘솔이 표시되면 null로 인쇄됩니다.
아래 코드를 사용합니다.
NSString* myString;
myString = [[NSString alloc] initWithData:nsdata encoding:NSASCIIStringEncoding];
의 문서NSString
말한다
https://developer.apple.com/documentation/foundation/nsstring/1416374-initwithdata
반환 값 인코딩을 사용하여 데이터의 바이트를 유니코드 문자로 변환하여 초기화된 NSString 개체입니다.반환된 개체는 원래 수신기와 다를 수 있습니다.어떤 이유로 초기화가 실패한 경우(예: 데이터가 인코딩에 유효한 데이터를 나타내지 않는 경우) 0을 반환합니다.
다른 인코딩을 사용하여 문제가 해결되는지 확인해야 합니다.
// The following constants are provided by NSString as possible string encodings.
enum {
NSASCIIStringEncoding = 1,
NSNEXTSTEPStringEncoding = 2,
NSJapaneseEUCStringEncoding = 3,
NSUTF8StringEncoding = 4,
NSISOLatin1StringEncoding = 5,
NSSymbolStringEncoding = 6,
NSNonLossyASCIIStringEncoding = 7,
NSShiftJISStringEncoding = 8,
NSISOLatin2StringEncoding = 9,
NSUnicodeStringEncoding = 10,
NSWindowsCP1251StringEncoding = 11,
NSWindowsCP1252StringEncoding = 12,
NSWindowsCP1253StringEncoding = 13,
NSWindowsCP1254StringEncoding = 14,
NSWindowsCP1250StringEncoding = 15,
NSISO2022JPStringEncoding = 21,
NSMacOSRomanStringEncoding = 30,
NSUTF16StringEncoding = NSUnicodeStringEncoding,
NSUTF16BigEndianStringEncoding = 0x90000100,
NSUTF16LittleEndianStringEncoding = 0x94000100,
NSUTF32StringEncoding = 0x8c000100,
NSUTF32BigEndianStringEncoding = 0x98000100,
NSUTF32LittleEndianStringEncoding = 0x9c000100,
NSProprietaryStringEncoding = 65536
};
-[NSString initWithData:encoding]
돌아올 것입니다nil
지정된 인코딩이 데이터의 인코딩과 일치하지 않는 경우.
데이터가 UTF-8로 인코딩되었는지 확인합니다(또는 NSUTF8StringEncoding을 데이터에 적합한 인코딩으로 변경).
목표 C:
[[NSString alloc] initWithData:nsdata encoding:NSASCIIStringEncoding];
스위프트:
let str = String(data: data, encoding: .ascii)
NSString *string = [NSString stringWithUTF8String:[Data bytes]];
-[NSString initWithData:encoding]
사용자의 친구이지만 올바른 인코딩을 사용해야 합니다.
스위프트:
let jsonString = String(data: jsonData, encoding: .ascii)
또는.utf8
또는 적절한 인코딩이 무엇이든.
데이터의 인코딩 유형을 잘 모르시겠습니까?문제없습니다!
잘못된 인코딩 유형으로 인해 0/null이 발생할 수 있는 잠재적인 인코딩 유형을 알 필요 없이 모든 기본을 포함해야 합니다.
NSString *dataString = [data base64EncodedStringWithOptions:NSDataBase64EncodingEndLineWithCarriageReturn];
알았어!
참고: 이 작업이 실패할 경우 NSD 데이터의 압축을 풀 수 있습니다.NSKeyedUnarchiver
그런 다음 다시 포장합니다.(id)unpacked
경유하여 다시NSKeyedArchiver
NSData 양식은 base64 인코딩이 가능해야 합니다.
id unpacked = [NSKeyedUnarchiver unarchiveObjectWithData:data];
data = [NSKeyedArchiver archivedDataWithRootObject:unpacked];
목표 C에는 NSData에 포함된 문자열 인코딩을 탐지하는 내장된 방법이 포함되어 있습니다.
NSData* data = // Assign your NSData object...
NSString* string;
NSStringEncoding encoding = [NSString stringEncodingForData:data encodingOptions:nil convertedString:&string usedLossyConversion:nil];
목표 C:
NSData *tmpData;
NSString *tmpString = [NSString stringWithFormat:@"%@", tmpData];
NSLog(tmpString)
언급URL : https://stackoverflow.com/questions/6411965/converting-nsdata-to-nsstring-in-objective-c
'programing' 카테고리의 다른 글
오라클 데이터베이스의 디코딩 기능 (0) | 2023.07.30 |
---|---|
중지된 도커 컨테이너를 다시 시작하는 방법 (0) | 2023.07.30 |
alloc, malloc 및 alloca — 차이점이 무엇입니까? (0) | 2023.07.25 |
PHP를 사용하여 이메일 주소가 실제인지 또는 유효한지 확인하는 방법 (0) | 2023.07.25 |
동일한 테이블의 여러 열에 대한 SQL (0) | 2023.07.25 |