将字符串形式输入的比特串转换为相应的十六进制表示的函数

//将整数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;
}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值