iOS十六进制和字符串的相互转换

时间:2021-07-27 17:53:11

转换代码,崩溃日志有些是十六进制

NSString *dictString = [dict JSONFragment];//组合成的
dictString==={"content":"Sadgfdfg","phoneno":"","email":"1049055935@qq.com"}===

// 十六进制转换为普通字符串的。
+ (NSString *)stringFromHexString:(NSString *)hexString { //

char *myBuffer = (char *)malloc((int)[hexString length] / 2 + 1);
bzero(myBuffer, [hexString length]
/ 2 + 1);
for (int i = 0; i < [hexString length] - 1; i += 2) {
unsigned
int anInt;
NSString
* hexCharStr = [hexString substringWithRange:NSMakeRange(i, 2)];
NSScanner
* scanner = [[[NSScanner alloc] initWithString:hexCharStr] autorelease];
[scanner scanHexInt:
&anInt];
myBuffer[i
/ 2] = (char)anInt;
}
NSString
*unicodeString = [NSString stringWithCString:myBuffer encoding:4];
NSLog(
@"------字符串=======%@",unicodeString);
return unicodeString;


}

//普通字符串转换为十六进制的。

+ (NSString *)hexStringFromString:(NSString *)string{
NSData
*myD = [string dataUsingEncoding:NSUTF8StringEncoding];
Byte
*bytes = (Byte *)[myD bytes];
//下面是Byte 转换为16进制。
NSString *hexStr=@"";
for(int i=0;i<[myD length];i++)

{
NSString
*newHexStr = [NSString stringWithFormat:@"%x",bytes[i]&0xff];///16进制数

if([newHexStr length]==1)

hexStr
= [NSString stringWithFormat:@"%@0%@",hexStr,newHexStr];

else

hexStr
= [NSString stringWithFormat:@"%@%@",hexStr,newHexStr];
}
return hexStr;
}

【编辑推荐】

  1. iOS开发学习 根据Debug和Release状态变化来屏蔽日志输出
  2. IOS开发学习 IDE环境搭建教程
  3. IOS开发学习笔记之问题集锦解决方案
  4. IOS开发学习笔记:iOS数据库编程
  5. 解析IOS开发学习数据库文档之IOS数据库封装

链接:

iOS十六进制和字符串的相互转换