【发布时间】:2019-09-28 01:38:59
【问题描述】:
我有一个包含十六进制值的字符串:
string str = "e101";
我需要把它写成 2 个字节的文件。当我试图写一个文件时,它会写出如下 4 个字节的值:
65 31 30 31
我正在使用以下操作进行文件写入:
myfile.open ("file.cf3",std::ios::binary);
myfile << str << "\n";
myfile.close();
但我想将其写为 2 个字节的值。
例如,如果 i g 如何将其作为 2 个字节写入文件?
std::string wut="b6306edf953a6ac8d17d70bda3e93f2a3816eac333d1ac78";
我想要这样的输出
.0n..:j..}p...?*8...3..x
【问题讨论】:
-
fwrite(一个 C 函数),不将std::string作为其第一个参数,它采用char*。 (在调用fwrite之前,您必须将str转换为unsigned short值)然后您将写入sizeof (short)字节数,而不是str.size()字节...对于"65 31 30 31",请参阅ASCIITable . -
那么您希望将
0xe1和0x01这两个字节写入您的文件中吗?请edit您的问题并说清楚。此外,您的问题标题具有误导性,这与 SHA 无关。 -
是的,我想把它写成只有 2 个字节的值
-
好的,你已经标记了这个问题 C++,但你展示的是 C。语言是非常不同的。您可以在 C++ 中调用 C 函数,但如果您应该用 C++ 编写它,您可能希望使用 C++ 文件流接口而不是 C
fwrite和 std::ios_base::openmode - binary