gpt4 book ai didi

c++ - 以十六进制字符串 : missing some information 读入 MIDI 文件

转载 作者:行者123 更新时间:2023-11-27 23:12:03 27 4
gpt4 key购买 nike

我有一个 MIDI 文件,我试图将其读取为十六进制字符串:特别是我想输入一个 MIDI 文件并使用十六进制字符串。我有以下内容:

ostringstream ss;
char * memblock;
unsigned char x;
std::string hexFile;

ifstream file ("row.mid", ios::binary);
ofstream output;
output.open("output.txt");

while(file >> x){
ss << hex << setw(2) << setfill('0') << (int) x;
}

hexFile = ss.str();
cout << hexFile;

当我输出 hexFile 时,我得到以下信息(注意末尾附近的空白):

4d546864000000060001000400f04d54726b0000001300ff58040402180800ff5103 27c000ff2f00

当我在十六进制编辑器中查看 MIDI 时,它显示如下:

4d546864000000060001000400f04d54726b0000001300ff58040402180800ff5103 0927c000ff2f00

后者绝对是正确的,正如轨道大小所证实的(在我手动插入的空白周围,正确的有一个前者缺少的 09)。

是什么导致此 09 在我的代码中丢失?

最佳答案

默认情况下,ifstream 会跳过空格。
您需要做的就是告诉它不要这样做。

ifstream file ("row.mid", ios::binary);
file.unsetf(ios::skipws); //add this line to not skip whitespace

关于c++ - 以十六进制字符串 : missing some information 读入 MIDI 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19668491/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com