我的输出如下:
63006f00 6c006f00 72000000
这个输出意味着“颜色”,但如何在可可中获得呢?
我在Stackoverflow上找到了这个方法:
- (NSString *)hexToString:(NSString *)string {
NSMutableString * newString = [[NSMutableString alloc] init];
NSScanner *scanner = [[NSScanner alloc] initWithString:string];
unsigned value;
while([scanner scanHexInt:&value]) {
[newString appendFormat:@"%c",(char)(value & 0xFF)];
}
string = [newString copy];
return string;
}
并且它有效...但我的字符串必须如下所示:
@"63 00 6f 00 6c 00 6f 00 72 00 00 00"
如上所述格式化字符串的任何帮助吗?
答案 0 :(得分:0)
您可以更改代码以使用原始输入,如下所示:
NSString *string = @"0x63006f00 0x6c006f00 0x72000000";
NSMutableString * newString = [[NSMutableString alloc] init];
NSScanner *scanner = [[NSScanner alloc] initWithString:string];
unsigned value;
while([scanner scanHexInt:&value]) {
uint16_t a = (value >> 24) & 0xff;
uint16_t b = (value >> 8) & 0xff;
if (a) [newString appendFormat:@"%c", a];
if (b) [newString appendFormat:@"%c", b];
}
NSLog(@"%@", newString);
我们的想法是一次处理两个字符,并在使用0xff
屏蔽它们之前将相应的项目移动到位。
然而,这看起来非常类似于阅读用UTF-16编码的东西的解决方法。