У меня есть некоторый код из сети, считывающий гиперспектральные данные (изображения, так много целых чисел, дающих интенсивность пикселей) в вектор. Я успешно использовал код в системе Linux, но теперь мне нужно то же самое в системе Windows. Я использую Visual Studio 2008.
Читая данные в Linux, я получаю вектор, полный целых чисел. На окнах я получаю целые числа, а затем некоторые символы или байтовые данные. Я не знаю достаточно, чтобы описать это лучше.
Вектор инициализируется как
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 - просто проверить, могу ли я привести число к целому числу. Работает нормально. Тем не менее, когда я помещаю temp в вектор, там вставляется больше информации, чем просто int, и она указывается как wchar_t. Смотрите изображение ниже. Я думаю, это связано с размером шрифта, но я не знаю, почему. Это моя или Visual Studios вина? Есть идеи?