代码的功能是实现字符串"00820041085c155e600d4f8e0d"转为16进制的数 : char buf[] = {0x00, 0x82, 0x00, 0x41, 0x08, 0x5c, 0x15, 0x5e, 0x60, 0x0d, 0x4f, 0x8e, 0x0d};
我认为这一段写得特别好:pKeyArray[i] = (pKeyArray[i] << 4) | cTempor;
我实现花了4行多余的代码,而此处只要一行,哈哈,这对自己又是有了一个提高。
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
typedef unsigned char u8;
typedef unsigned int u32;
u32 str_to_hexarray(const char *pUserInput, unsigned char *pKeyArray)
{
if (NULL == pUserInput || NULL == pKeyArray)
{
return 0;
}
unsigned int uiKeySize = strlen(pUserInput) / 2;
int i = 0;
char cTempor = 0;
while (i < uiKeySize)
{
if (*pUserInput >= '0' && *pUserInput <= '9')
{
cTempor = *pUserInput - 48;
}
else
{
cTempor = 0xa + (*pUserInput - 'a');
}
pKeyArray[i] = cTempor;
pUserInput++;
if (*pUserInput >= '0' && *pUserInput <= '9')
{
cTempor = *pUserInput - 48;
}
else
{
cTempor = 0xa + (*pUserInput - 'a');
}
pKeyArray[i] = (pKeyArray[i] << 4) | cTempor;
pUserInput++;
i++;
}
return uiKeySize;
}
void main()
{
unsigned char str[] = "00820041085c155e600d4f8e0d";
unsigned char dst[20] = { 0 };
int i;
int j;
u32 len;
len = str_to_hexarray(str, dst);
for (i = 0; i < len; i++)
{
printf("dst[%d] = %x\n", i, dst[i]);
}
system("pause");
}
代码就是这样,自己研究吧!