C語言用sscanf把16進制src字符串轉爲16進制數組dest 比如:“1234” 轉爲 {0x12,0x34}

改進:轉換後可以放在原數組裏,以節約資源。

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
//把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<length;i++)
	{
		printf("%02X\n",src[i]); //12 34 00
	}
	return 0;
}

原創原版:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
//把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;
}

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章