我通过以下方式转换为十六进制:
NSString * hexStr = [NSString stringWithFormat:@"%@",
[NSData dataWithBytes:[string cStringUsingEncoding:NSUTF8StringEncoding]
length:strlen([string cStringUsingEncoding:NSUTF8StringEncoding])]];我从外语转换,所以现在每个字符是4字节的十六进制。我试图将它转换回nsstring,但我没有得到原始的字符串(由How to convert HEX to NSString in Objective-C?)。
帮助:)
发布于 2013-12-29 21:26:37
以下是一些观察结果:
cStringUsingEncoding将字符串转换为NSData,然后将其用于dataWithBytes的技术有点间接。这样做要容易得多:NSData * NSData = string dataUsingEncoding:NSUTF8StringEncoding;
NSString,可以执行以下操作:NSString * encoding:NSUTF8StringEncoding];
stringWithFormat创建了NSData的十六进制字符串表示。现在的问题是如何将十六进制字符串表示形式转换回NSData。有很多技术,但这里有一个例程可以执行that:
所以,把所有这些放在一起,
NSString *string = @"こんにちは、世界。";
NSData *data = [string dataUsingEncoding:NSUTF8StringEncoding];
NSString *hexString = [NSString stringWithFormat:@"%@", data];
NSData *resultingData = [self dataFromHexString:hexString];
NSString *resultingString = [[NSString alloc] initWithData:resultingData encoding:NSUTF8StringEncoding];发布于 2013-12-29 17:54:32
每个字符是4个字节的十六进制?这意味着它实际上是四个半字节,所以它不是UTF 8而是UTF 16。
https://stackoverflow.com/questions/20823478
复制相似问题