关于将字符串转换为16进制数

 代码的功能是实现字符串"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");

}

代码就是这样,自己研究吧!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值