如何将Char *转换为十六进制值

时间:2012-07-25 11:43:55

标签: iphone objective-c char hex

我有一个char数组,我需要转换为十六进制值

char* arrrr =[self mountLVparams:NULL :c :code_ward_arr];  

int size =strlen(arrrr);

我正在尝试这个,但这没有发生

 NSData* data = [NSData dataWithBytes:arrrr length:sizeof(sizeof(unsigned char)*size)];

2 个答案:

答案 0 :(得分:0)

试试这个:

NSString *inp = [NSString stringWithString:@"MmMmMm"];
char star = [inp characterAtIndex:3];
NSString *string = [NSString stringWithFormat:@"char:%c andHex:%x",[inp characterAtIndex:3],star];
NSLog(@"%@",string);

在输出中查看"%@"作为常规字符串。在字符串中,您将收到char的十六进制值。

char:m andHex:6d

使用数组,您必须在循环中执行

答案 1 :(得分:0)

您不会将值“转换”为十六进制。十六进制只是计算或显示相同数字的另一种方式。

if (0xFF==255)
{
  NSLog(@"255 equals 0xFF");
}

现在看下面的代码将你的字节数组转换为int,然后显示然后将int格式化为十六进制字符串。

-(void) convertData: (unsigned char*) data 
{
   int numBytes = sizeof(int);

   //convert array of bytes to NSData*
   NSData* binaryData = [[NSData alloc] initWithBytes: (void*) data length: numBytes];

   //read value of number stored in data, presuming it is an integer
   int number =  *((int*) data);

   //format number as a hex string
   NSString* hexString = [NSString stringWithFormat:@"%X",number];
}