前一段时间开发中要求将中文字符转16进制存储,然后再读取16进制字符串转回中文显示。
中文字符转16进制其实比较容易,问题出在怎么将字符串转回中文,作为菜鸟只能靠大量的国内外大侠的帖子找答案了~~于是痛苦的旅程开始鸟~
关于中文16进制再转中文,一般使用这种方式:
NSData*nsdataUTF16 = [strdataUsingEncoding:NSUTF16LittleEndianStringEncoding];//转HEX
NSString*newStr = [[NSString alloc] initWithData:nsdataUTF16encoding:NSUTF16LittleEndianStringEncoding];//转回字符
有了方法我就开始思考怎么才能将存储的16进制字符串放入到NSData中,能使其转回成中文字符
--------------------我是郁闷的分隔符-----------------------
最后我终于在一家外文网站上找到了答案,答案是当当当~~
NSString*command =@"72ff63cea198b3edba8f7e0c23acc345050187a0cde5a9872cbab091ab73e553";
command =[command stringByReplacingOccurrencesOfString:@" "withString:@""];
NSMutableData *commandToSend= [[NSMutableDataalloc] init];
unsignedchar whole_byte;
charbyte_chars[3] = {' ',' ',' '};
inti;
for (i=0; i< [command length]/2; i++) {
byte_chars[0] = [command characterAtIndex:i*2];
byte_chars[1] = [command characterAtIndex:i*2+1];
whole_byte= strtol(byte_chars, NULL, 16);
[commandToSend appendBytes:&whole_bytelength:1];
}
NSLog(@"%@", commandToSend);
------------------我是完成任务的分割线---------------------------
谨以此文,纪念菜鸟的各种辛苦、不甘及努力后终于找到答案时的兴奋心情