C ++将Hex Char转换为Bin

时间:2015-08-07 04:32:08

标签: c++ binary hex converter

我编写了一个程序,用于将十六进制数字的16个字符转换为64位二进制数。 64 = 16个十六进制+4个数字箱。

string completeBitmap;
char bitmap[16];
for (int c = 0; c < sizeof(bitmap); c++)
{
    string temp;
    temp = bitset<4>(bitmap[c]).to_string();
    completeBitmap += temp;
}

但是当我读'a','b,'c','d','e''f'时,它们无法正确转换。 例如,'f'应为'1111',但会产生'0110'。 谢谢你的帮助

2 个答案:

答案 0 :(得分:0)

hToken2

检查一下。

答案 1 :(得分:0)

bitset<4>(bitmap[c]).to_string();将为bitmap数组

中的元素的ascii代码提供二进制(最后4个LSB)

您可能需要以下内容:

for (int c = 0; bitmap[c] ; c++)
{
    string temp;
    char diff = 0 ;

    if( bitmap[c] >= 'a' && bitmap[c] <= 'f' ) diff = -'a' + 10;

    else if( bitmap[c] >= 'A' && bitmap[c] <= 'F' ) diff = -'A' + 10 ;

    else if (  bitmap[c] >= '0' && bitmap[c] <= '9' ) diff = - '0' ;

    else assert ( false );

    temp = bitset<4>(bitmap[c] + diff ).to_string();

    completeBitmap += temp  ;
}