Во-первых, стандартный тип 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;
}