我尝试了将 NSData 转换为十六进制字符串值的以下代码,但都错了?
这里“结果”是我的 NSdata
我需要一个十六进制字符串作为输出,但我没有得到它
NSUInteger dataLength = [result length];
NSLog(@"%d",dataLength);
NSMutableString *string = [NSMutableString stringWithCapacity:dataLength*2];
const unsigned char *dataBytes = [result bytes];
for (NSInteger idx = 0; idx < dataLength; ++idx) { [string appendFormat:@"%02x", dataBytes[idx]];
}
NSLog(@"%@",string);
请问我该如何转换
更新:结果数据包含加密字符串。我想将其转换为十六进制值
最佳答案
这是我用于执行此操作的类别。这只是为您提供了十六进制数据的所有字符。没有换行符或任何东西。
@implementation NSData (NSData_Conversion)
#pragma mark - String Conversion
- (NSString *)hexadecimalString
{
/* Returns hexadecimal string of NSData. Empty string if data is empty. */
const unsigned char *dataBuffer = (const unsigned char *)[self bytes];
if (!dataBuffer)
{
return [NSString string];
}
NSUInteger dataLength = [self length];
NSMutableString *hexString = [NSMutableString stringWithCapacity:(dataLength * 2)];
for (int i = 0; i < dataLength; ++i)
{
[hexString appendFormat:@"%02x", (unsigned int)dataBuffer[i]];
}
return [NSString stringWithString:hexString];
}
关于ios - 如何将 NSdata 转换为十六进制字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16521164/