---------------
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.与传入普通变量不同的是,传入数组变量作为参数的实质就是传入一个指针。
这个指针指向数组的首元素的地址。