gpt4 book ai didi

c++ - 从文件缓冲区读取 6 个字节

转载 作者:行者123 更新时间:2023-11-28 01:07:19 25 4
gpt4 key购买 nike

伙计们,我需要从文件缓冲区中读取 6 个字节并将它们存储为无符号数。

ifstream ifs("dummy.txt", ios::binary);
unsigned __int64 result = 0;
ifs.read((char*)&result, 6);

这是正确的吗?

最佳答案

首先,64 位无符号整数的标准类型是'unsigned long long' 或 'uint64_t'。其次,你必须知道您正在阅读的文件中的数据格式。我从未见过格式它使用六个字节,所以很难猜测,但假设它是二进制,你应该使用:

uint64_t readSix( std::istream& src )
{
uint64_t result = checkedGet( src ) ;
result |= checkedGet( src ) << 8;
result |= checkedGet( src ) << 16;
result |= checkedGet( src ) << 24;
result |= checkedGet( src ) << 32;
result |= checkedGet( src ) << 48;
return result;
}

uint64_t readSix( std::istream& src )
{
uint64_t result = checkedGet( src ) << 48;
result |= checkedGet( src ) << 32;
result |= checkedGet( src ) << 24;
result |= checkedGet( src ) << 16;
result |= checkedGet( src ) << 8;
result |= checkedGet( src );
return result;
}

根据格式,有:

unsigned char checkedGet( std::istream& src )
{
int result = src.get();
if ( result == EOF )
throw UnexpectedEof();
return result;
}

关于c++ - 从文件缓冲区读取 6 个字节,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5469671/

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