C++ 将十六进制值存储到std::vector

C++ 将十六进制值存储到std::vector,c++,vector,hex,C++,Vector,Hex,我试图将一组十六进制值存储到一个向量中,这样我就可以转换并处理它们。我有一个*.dat文件,看起来像: 0002 0001 0000 0000 0001 0001 0000 0000 0002 0004 0003 0004 0001 fffe fffa fffd fffa 0000 我正在读取带有以下代码的文件: std::vector<unsigned char> data; std::ifstream file; file.open("/home/vktrbhm/SciVis

我试图将一组十六进制值存储到一个向量中,这样我就可以转换并处理它们。我有一个*.dat文件,看起来像:

0002 0001 0000 0000 0001

0001 0000 0000 0002 0004 0003

0004 0001 fffe fffa fffd fffa 0000

我正在读取带有以下代码的文件:

std::vector<unsigned char> data;

std::ifstream file;
file.open("/home/vktrbhm/SciVis/DATA/elev0/L0e000a.dat", std::ios::binary);
if(file.is_open()){
    std::cout << "hello data"<< std::endl;
}else{
    std::cerr << "Na ahh aahhhaaaa .... Wrong Directory"<< std::endl;
}

// get length
file.seekg(0, file.end);
int length = file.tellg();
file.seekg(0, file.beg);

data.resize(length);

file.seekg(0, std::ios::beg);
file.read((char*)&data.front(), length);
file.close();

std::cout << data.at(0) << std::endl;
但我的输出只是� 而不是价值。我知道我必须在某一点上转换它,但我不知道如何转换

我将感谢您的帮助,对于这个愚蠢的问题我深表歉意。

这行:

std::cout << data.at(0) << std::endl;

你是什么意思,你的dat文件是文本还是二进制。如果你做了cat x.dat,你会看到什么?啊,好的。所以我的数据向量存储了所有的十六进制值,为了转换它们,我需要使用static_cast。这帮了大忙。谢谢
std::cout << static_cast<int>(data.at(0)) << std::endl;