我怎样才能将NSdata转换为十六进制字符串? [英] How can i convert NSdata to hex string?

查看:161
本文介绍了我怎样才能将NSdata转换为十六进制字符串?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我试着将NSData转换为十六进制字符串值的代码,但都是错误的?

这里result是我的NSdata



我需要一个十六进制字符串作为输出,但iam没有得到那个

  NSUInteger dataLength = [结果长度] ; 
NSLog(@%d,dataLength);
NSMutableString * string = [NSMutableString stringWithCapacity:dataLength * 2];
const unsigned char * dataBytes = [结果字节];
for(NSInteger idx = 0; idx< dataLength; ++ idx){[string appendFormat:@%02x,dataBytes [idx]];
}
NSLog(@%@,string);

我该如何转换这个

更新:结果数据包含加密字符串。我希望将其转换为十六进制值。

解决方案

这是一个类别,这样做。这只是给你十六进制数据的所有字符。

  @implementation NSData(NSData_Conversion)

#pragma mark - 字符串转换
- (NSString *)十六进制字符串
{
/ *返回NSData的十六进制字符串。如果数据为空,则为空字符串。 * /

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];
}


i tried following codes for converting a NSData to hex string values but all are wrong?

here "result" is my NSdata

i need a hex string as output but iam not getting that

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);

how can i convert this please

UPDATES: the result data contains encrypted string .i want to convert this to hex values

解决方案

Here is a category that I have for doing this. This just gives you all the characters of the data in hex. No line break or anything.

@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];
}

这篇关于我怎样才能将NSdata转换为十六进制字符串?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆