C 将这种十六进制字符串转换为NSData/NSString

C 将这种十六进制字符串转换为NSData/NSString,c,cocoa,nsstring,hex,nsdata,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没有经验:(在我看来像Unicode字符(特别是CJK表意文字) 使用扫

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

\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没有经验:(

在我看来像Unicode字符(特别是CJK表意文字)

使用扫描字符串。最多扫描一个反斜杠,然后扫描反斜杠并将其扔掉,然后扫描x并将其扔掉

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

重复该操作,直到输入字符串用完,您将已将输入字符串及其所有转义序列转换为具有未转义字符的字符串