C语言用sscanf把16进制src字符串转为16进制数组dest 比如:“1234” 转为 {0x12,0x34}

改进:转换后可以放在原数组里,以节约资源。

#include 
#include 
#include 
//把16进制src字符串转为16进制数组dest 比如:“1234” {0x12,0x34} 返回长度
unsigned int HexStringtoByte(char *dest, char *src)
{
	unsigned int i = 0;
	int j=0;
    unsigned int length=strlen(src)/2;
	for (; i < length; i++)
	{
		sscanf(src + 2 * i, "%02X", &j); //j是4个字节,j来临时中转
		*(dest+i)=(char)j;
	}
    return length;
}
int main()
{
	unsigned int i;
	char src[]="123400";
 
	unsigned int length=HexStringtoByte(src,src);//转换后放在原数组里,可能存在0x00,转换后长度不能用strlen来求了。
	for(i=0;i

原创原版:

#include 
#include 
#include 
//把16进制src字符串转为16进制数组dest 比如:“1234” {0x12,0x34}  返回长度
int HexStringtoByte(char *dest, char *src)
{
    char i = 0;
    int length=strlen(src)/2;
    for (; i < length; i++)
    {
        sscanf(src + 2 * i, "%02X", (int *)(dest+i));
    }
    return length;
}
int main()
{
	char dest[2000]={0};
	char src[]="383132";
	HexStringtoByte(dest,src);
	printf("%02X %02X %02X\n",dest[0],dest[1],dest[2]); //38 31 32
	return 0;
}

 

 

 

你可能感兴趣的:(c语言)