將字符串形式輸入的比特串轉換爲相應的十六進制表示的函數

//將整數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;
}

發佈了35 篇原創文章 · 獲贊 1 · 訪問量 5萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章