我有一些来自网络的代码,将高光谱数据(图像,所以很多整数给出像素强度)读入向量。我在 Linux 系统上成功使用了该代码,但现在我在 Windows 系统上需要相同的代码。我使用 Visual Studio 2008。
在 Linux 中读取数据我得到一个充满整数的向量。在 Windows 上,我得到整数,然后是一些字符或字节数据。我没有足够的了解来更好地描述它。
向量由以下方式初始化
std::vector< unsigned short int > data;
data.resize( samples * lines * bands );
std::fill( data.begin(), data.end(), 0 );
相关代码是
for( unsigned int i=0; i < num_pixels && file; ++i ){
char number[sizeof(DataType)];
file.read( number , sizeof( DataType ) );
int l = sizeof(DataType)-1;
if (machine_endian != header.big_endian) {
for (int j = 0; j < l; j++, l--){
number[j] ^=number[l];
number[l] ^= number[j];
number[j] ^= number[l];
}
}
unsigned short temp = *((unsigned short int*)number);
data[i] = temp;
}
machine_endian 部分永远不会运行。temp 只是为了测试我是否可以将数字转换为 int。它工作正常。但是,当我将 temp 放入向量中时,插入的信息不仅仅是 int,它被列为 wchar_t。见下图。我想这与字体大小有关,但我不知道为什么。是我的错还是 Visual Studios 的错?有任何想法吗?