gpt4 book ai didi

c++ - 恐惧的怪异行为

转载 作者:搜寻专家 更新时间:2023-10-31 00:52:44 24 4
gpt4 key购买 nike

我正在从一个文件中读取二进制 uint32_t 数据,指示下一个二进制 block 的大小,之后我读取了该 block ,但读取指针“移动”错误。

FILE* file = fopen("file.zip", "r");
long pointerA = ftell(file);
uint32_t streamSize = 0;
fread(reinterpret_cast<char*>(&streamSize), sizeof streamSize,1,file);
long pointerB = ftell(file);
char* zipData = new char[streamSize];
fread(zipData, sizeof(char),streamSize,file);

long pointerC = ftell(file);
fseek( file, pointerA + 4 + streamSize, SEEK_SET );
long pointerD = ftell(file);
qDebug()<<"streamSize"<<streamSize<<"Positions"<<pointerA<<pointerB<<pointerC<<pointerD;

PointerA 是原始位置,PointerB 是读取 uint32_t 后的位置,PointerC 是读取所有二进制数据后的指针,PointerD 只是检查我认为应该是正确行为的内容。

现在让我们看看调试:

streamSize 2653 Positions 151 156 4627 2808

为什么流读取位置也移动了4627而不是2808?

提前感谢您的任何提示!

最佳答案

用户@alan-birtles 和@remy-lebeau 都是对的,我将其作为文本而不是二进制文件打开,这就是问题所在。

很遗憾,我无法将其标记为已解决。

附言。对于初学者,这意味着用“rb”而不是“r”打开文件。

关于c++ - 恐惧的怪异行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50922246/

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