C语⾔实现将16进制的字符串转化为2进制
使⽤C语⾔将⼀段字符串中的16进制数转化为2进制,写⼀个简单的函数来实现这个功能。基本思想是通过对字符⽐对的⽅法。typedef unsigned          char uint8_t;
uint8_t bx[16]={0b0000,0b0001,0b0010,0b0011,0b0100,0b0101,0b0110,0b0111,0b1000,0b1001,0b1010,0b1011,0b1100,0b1101,0b1110,0b1111};
void vd_g_Test_HexToBin2(uint8_t* HexData,uint16_t HexDataLen,uint8_t* BinData,uint16_t BinDataLen)
{
uint16_t Cnt = 0;
uint16_t ct = 0;
uint16_t ctt= 0;
uint16_t sx = BinDataLen/2;
uint16_t data_len = HexDataLen;
while(HexDataLen--)
{
switch (HexData[Cnt])
{
case'0':
BinData[Cnt] = bx[0];
break;
case'1':
BinData[Cnt] = bx[1];
break;
case'2':
BinData[Cnt] = bx[2];
break;c 字符串转数组
case'3':
BinData[Cnt] = bx[3];
break;
case'4':
BinData[Cnt] = bx[4];
break;
case'5':
BinData[Cnt] = bx[5];
break;
case'6':
BinData[Cnt] = bx[6];
break;
case'7':
BinData[Cnt] = bx[7];
break;
case'8':
BinData[Cnt] = bx[8];
break;
case'9':
BinData[Cnt] = bx[9];
break;
case'a':
case'A':
BinData[Cnt] = bx[10];
break;
case'b':
case'B':
BinData[Cnt] = bx[11];
break;
case'c':
case'C':
BinData[Cnt] = bx[12];
break;
case'd':
case'D':
BinData[Cnt] = bx[13];
break;
case'e':
case'E':
BinData[Cnt] = bx[14];
break;
case'f':
case'F':
BinData[Cnt] = bx[15];
break;
}
Cnt++;
}
if (data_len %2 !=0)
{
BinData[BinDataLen-1]=0;
}
while(sx--)
{
BinData[ct] = BinData[ctt+1]|BinData[ctt]<<4;
ct=ct+1;
ctt= ctt+2;
}
}
后⾯的循环是将两个值存在⼀个数组单元中,⽐如“0E2C2”  的⼗六进制字符串,数组占⽤空间为5,转换完为 0E 2C 20,占⽤空间为3。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。