作者:朱克锋
邮箱:zhukefeng@iboxpay.com
转载请注明出处:http://blog.youkuaiyun.com/linux_zkf
+ (NSString*)hexStringForData:(NSData*)data
{
if (data == nil) {
return nil;
}
NSMutableString* hexString = [NSMutableString string];
const unsigned char *p = [data bytes];
for (int i=0; i < [data length]; i++) {
[hexString appendFormat:@"%02x", *p++];
}
return hexString;
}
+ (NSString*)hexStringForChar:(unsigned char *)data len:(int)len
{
if (len == 0) {
return nil;
}
NSMutableString* hexString = [NSMutableString string];
const unsigned char *p = data;
for (int i=0; i < len; i++) {
[hexString appendFormat:@"%02x", *p++];
}
return hexString;
}
+ (NSData*)dataForHexString:(NSString*)hexString
{
if (hexString == nil) {
return nil;
}
const char* ch = [[hexString lowercaseString] cStringUsingEncoding:NSUTF8StringEncoding];
NSMutableData* data = [NSMutableData data];
while (*ch) {
if (*ch == ' ') {
continue;
}
char byte = 0;
if ('0' <= *ch && *ch <= '9') {
byte = *ch - '0';
}
else if ('a' <= *ch && *ch <= 'f') {
byte = *ch - 'a' + 10;
}
else if ('A' <= *ch && *ch <= 'F') {
byte = *ch - 'A' + 10;
}
ch++;
byte = byte << 4;
if (*ch) {
if ('0' <= *ch && *ch <= '9') {
byte += *ch - '0';
} else if ('a' <= *ch && *ch <= 'f') {
byte += *ch - 'a' + 10;
}
else if('A' <= *ch && *ch <= 'F')
{
byte += *ch - 'A' + 10;
}
ch++;
}
[data appendBytes:&byte length:1];
}
return data;
}

本文介绍了在iOS开发中如何将NSData转换为NSString,以及如何将NSString转换回NSData的方法。提供了一组实用的类别方法,包括将NSData转换为16进制字符串(hexStringForData:),将指定长度的字符数组转换为16进制字符串(hexStringForChar:length:),以及将16进制字符串转换回NSData(dataForHexString:)。这些方法对于处理二进制数据和显示其十六进制表示非常有用。
3999

被折叠的 条评论
为什么被折叠?



