050.Hex2String 十六进制转字符串

来源:互联网 发布:福州seo技巧培训 编辑:程序博客网 时间:2024/06/14 01:30
---------------  main.m  ---------------
把十六进制的字符串按ASCII表解码成对应的字符串。
#import <Foundation/Foundation.h>

NSString * hex2String(char hex[] , unsigned long len)
{
     char tmp[len/2 + 1];
     for (int i = 0 , j = 0; i < len; i+=2 , j++)
     {
         int shiBit = hex[i] >= 97 ? hex[i] - 87 :
             (hex[i] >= 65 ? hex[i] - 55 : hex[i] - 48);
         int geBit = hex[i + 1] >= 97 ? hex[i + 1] - 87 :
             (hex[i + 1] >= 65 ? hex[i + 1] - 55 : hex[i + 1] - 48);
         int intTmp = shiBit * 16 + geBit;
         tmp[j] = intTmp;
     }
      tmp[len/2] = '\0'; // 添加字符串结束字符
     return [NSString stringWithCString:tmp encoding: NSASCIIStringEncoding];
}
int main()
{
    char hex[] = "616162636464";
    NSLog(@"%@", hex2String(hex, strlen(hex)));
    char hex2[] = "6a6b6c6D6E6f70717273";
    NSLog(@"%@", hex2String(hex2, strlen(hex2)));
}

一、编写本节代码的具体步骤:
1.参照003节的代码编写步骤。

二、本节代码涉及到的知识点:
1.在上面的代码中,定义函数时,指定了函数的形参类型是数组,
  但并没有指定数组的长度。而是通过第二个参数来动态决定该数组的长度。
  这样就可以传入长度不等的数组了。
2.与传入普通变量不同的是,传入数组变量作为参数的实质就是传入一个指针。
  这个指针指向数组的首元素的地址。
0 0