ios - 如何将 NSdata 转换为十六进制字符串?

标签 ios objective-c nsstring hex

我尝试了将 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/

相关文章:

ios - Objective-C 中的字符串比较与 isEqualToString

iphone - 如何在 Objective C 中从 NSString 中拆分换行符

ios - MPMoviePlayerController 和自定义控件 iOS8

ios - Instagram 集成授权码?

ios - 关于带有圆角的 UIImageView

ios - 图像角半径仅在左下和右下

iphone - 查看 NSString drawInRect 将使用多少行的简单方法?

ios - "The fi bug"奇怪的 iOS 7 属性文本错误

ios - leftAnchor 和 leadingAnchor 的区别?

objective-c - NSView 的 -layout 方法的覆盖到底应该如何工作?