将此类十六进制字符串转换为NSData / NSString

时间:2011-11-26 15:52:38

标签: c cocoa nsstring hex nsdata

我有这个十六进制字符串:

\x5c30\x3032\x5f5c\x3337\x345c\x3334\x366f\x5c32\x3633\x5c30\x3136\x5c32\x3132\x5c32\x3234\x4e5c\x3236\x335c\x3231\x335c\x3337\x355c\x3335\x315c\x3232\x365c\x3337

如何将其转换为NSString或NSData?我虽然使用C方法,但我没有经验C :(

1 个答案:

答案 0 :(得分:0)

对我来说,看起来像Unicode字符(特别是CJK表意文字)。

使用NSScanner扫描字符串。扫描到反斜杠,add whatever you scanned to a mutable string。然后,扫描反斜杠并将其丢弃,然后扫描x并扔掉它。

然后,扫描四个单个字符,这将是数字(NSScanner没有扫描单个字符的方法,因此您需要使用characterAtIndex:自己获取它们,然后调整扫描仪的扫描位置因此)。执行十六进制数字字符到数字和数学的适当转换,以便从它们组合单个数字,并且您将获得由转义序列表示的代码点(字符值)。将该单个字符添加到字符串中。

重复此操作,直到输出字符串用完为止,您将输入字符串及其所有转义序列转换为带有未转义字符的字符串。