繁体   English   中英

十六进制可读的NSString

[英]Hex to human readable NSString

我有这样的输出:

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"

如上格式化字符串有帮助吗?

您可以更改代码以使用原始输入,如下所示:

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编码的内容。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM