首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

怎么将ASCII转换为二进制并在屏幕上输出

2012-03-05 
如何将ASCII转换为二进制并在屏幕上输出?有一个txt文件,里面有一个字符串 4020180133,现在想把该字符串

如何将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;
}

热点排行