所以我需要一点帮助,我目前有一个文本文件,其中包含以下数据:
myfile.txt
-----------
b801000000
我想做的是将 b801 等数据读取为位,这样我就可以获取值
0xb8 0x01 0x00 0x00 0x00.
目前我正在使用以下 typedef 将该行读入无符号字符串。
typedef std::basic_string <unsigned char> ustring;
ustring blah = reinterpret_cast<const unsigned char*>(buffer[1].c_str());
我不断失败的地方是现在试图让每个字符 {'b', '8' 等...} 真正成为 { '0xb8', '0x01' 等...}
任何帮助表示赞赏。
Thanks.
我看到两种方法:
打开文件为std::ios::binary
并使用std::ifstream::operator>>
使用标志后提取十六进制双字节std::ios_base::hex
并提取为两个字节大的类型(例如stdint.h
的 (C++0x/C99) uint16_t 或等效项)。请参阅 @neuro 对您的问题的评论,以获取使用的示例std::stringstream
s. std::ifstream
工作原理几乎相同。
直接访问流迭代器并手动执行转换。更难、更容易出错,也不一定更快,但仍然很有可能。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)