【发布时间】:2015-04-05 23:03:26
【问题描述】:
我正在尝试读取二进制文件以获取其各个位值。我正在使用以下函数这样做。
string readFileBytes(const char *name)
{
ifstream fl(name);
fl.seekg( 0, ios::end );
size_t len = fl.tellg();
char *ret = new char[len+1];
fl.seekg(0, ios::beg);
fl.read(ret, len);
fl.close();
ret[len] = '\0';
return ret;
delete ret;
}
这很好用。对于下一部分,我将获取数组ret 的每个元素,并使用我编写的以下函数来获取各个位值。
string out;
for (int i=0; i < len; i++)
{
for (int x =7; x >=0; x--)
{
out += ((ret[i]>>x) & 0x01);
}
}
如果我在嵌套循环中有cout << ((ret[i]>>x) & 0x01);,它会完美地打印位值。但是,当我拥有它并打印字符串 (out) 时,我只得到笑脸。
有什么想法吗?
【问题讨论】:
-
至少操作系统对你的笑脸很好,我的机器只是无聊地显示
NULSOHNULNUL...