如何将ASCII转换为二进制并在屏幕上输出?
有一个txt文件,里面有一个字符串 " 40 20 18 01 33 ",现在想把该字符串从txt文件中读取出来并去掉空格,然后转换为二进制并在屏幕上输出,应该怎么做?就是先把该字符串去空格变为 "4020180133 ",然后在屏幕上输出 "01000000 00100000 …… ",用C/C++语言在VC上应该怎么实现呢?请好心人给予指点,谢谢!
[解决办法]
把 "4020180133 "转换成 "01000000 00100000 …… "
inline BYTE hexchar2char(BYTE ch)
{
if (ch > = '0 ' && ch <= '9 ')
return ch - '0 ';
ch = toupper(ch);
if (ch > = 'A ' && ch <= 'Z ')
return ch - 'A ' + 10;
return 0;
}
BOOL hexstr2bin(const char *buf, BYTE *bindata, int maxlen, int *len)
{
for (*len=0; buf[0] && buf[1] && *len < maxlen; buf+=2, (*len)++)
{
bindata[*len] = hexchar2char(buf[0]) < < 4 | hexchar2char(buf[1]);
}
return TRUE;
}
int main(int argc, char* argv[])
{
BYTE data[1024] = " ";
int len = 0;
string strDst;
hexstr2bin( "4020180133 ", data, 1024, &len);
for (int count = 0; count < len; count++)
{
for (int i = 0; i < 8; i++)
{
strDst += data[count] < < i & 0x80 ? "1 " : "0 ";
}
strDst += " ";
}
printf( "%s ", strDst.c_str());
return 0;
}