我有一些代碼從淨讀取高光譜數據(圖像,所以許多整數給像素強度)成一個向量。我在Linux系統上使用了成功的代碼,但現在我需要在Windows系統上使用相同的代碼。我使用Visual Studio 2008.向量將不會存儲正確的數據類型(wchar_t,而不是uint16_t)
在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的錯?有任何想法嗎?
'wchar_t'被定義爲'unsigned short'(如果它不是直接定義爲它,它是兩個字節並且行爲方式相同),所以它只是typename顯示問題。數字是否正確(不論類型)? –
感謝您的回覆!好的,這個清理了一下。不幸的是,我現在無法檢查某些數字,但我沒有理由認爲它們不正確(合理的價值)。如果這非常重要,我可以嘗試獲取這些值,但這有點工作量。但是如何將它們在temp變量中保存得很好,然後在使用相同數據類型初始化時在vector中獲取額外數據? – SveinT
對不起,英文不是我的第一語言,我不明白「但是如何將它們在temp變量中保存得很好,然後在使用相同數據類型初始化時在vector中獲取額外數據?你能重述一下這個問題嗎? –