//将整数x的第i位(从左到右)设为1,其中bit_len为比特串的长度
void Set(int *x, int i,int bit_len)
{
(*x) |= (1<<bit_len-i-1);
}
//将字符串型的比特串解析为相应的整数
//如输入为"11110011",则输出为243
int ParseBitStringToInt(char * bitString)
{
int x = 0;
int strLength = strlen(bitString);
for(int i =0 ; i< strLength; i++)
{
if (bitString[i] == '1')
{
Set(&x,i,strLength);
}
}
return x;
}
//将整数转换为相应的十六进制形式的字符串
//如若x=243,则buf = "00F3"。
bool GetHexStringOfInt(int x, char* buf)
{
if (strlen(buf) < sizeof(x))
{
return false;
}
char hexChars[] = "0123456789ABCDEF";
int i = 0,index = 0;
for(; i < sizeof(int); i++)
{
index = (x & (0xF << i*sizeof(int))) >> i*sizeof(int);
buf[sizeof(int) - 1 - i] = hexChars[index];
}
buf[i] = '/0';
return true;
}
int main()
{
char buf[]="1011101011111101";
GetHexStringOfInt(ParseBitStringToInt(buf),buf);
printf("%s",buf);
return 0;
}
将字符串形式输入的比特串转换为相应的十六进制表示的函数
最新推荐文章于 2021-09-09 11:35:44 发布