2012-07-18 20 views
3

我有一個NifTi文件,當我加載它的值奇怪地分散在int_32範圍內。但是,當我通過NifTi-Python綁定加載相同的文件時,值範圍是不同且正確的。 (我知道這是正確的,因爲文件的生產者(FSL)聲稱只能生成該範圍內的值。)所以我想檢查這些值是否真的存儲在不同的字節順序中(與其他文件相比),如果是這樣,那麼正確解釋這些值。如何確定NifTi文件的字節順序?

+0

文件格式規範是否堅持排序而不是讓它是任意的?因此,您可能希望在運行時檢測自己的計算機的字節序,並根據需要調整文件讀取代碼。你沒有分享任何代碼,所以很難說出你真正的問題。 – selbie 2012-07-18 07:52:03

+0

文件格式將指定字節順序,或者指定從文件內容中確定它的方法。 (例如,一個文本文件可能以BOM開頭。) – 2012-07-18 08:41:07

回答

3

您可以使用nifti_1_header結構中的第一個字段。它是sizeof_hdr,它包含標題的大小(在我的情況下是一個單一的348字節的結構,而不是三個較小的結構)。

只需閱讀第4個字節的頭的,它應該是348(化名0x0000015C),如果它已經被寫入大端你有0x5C010000(所以在磁盤上你會小端和00 00 01 5C用於讀取5C 01 00 00大端)。

+0

'hexdump -C'非常好我可以確保我的所有文件具有相同的字節順序,並顯示我的錯誤與字節順序無關。 (而在代碼的某處,一個'int32_t'變量被分配了'std :: numeric_limits < double > :: max()',這導致了'-214XXXXXX ...',我認爲它是'int32_t'的最小值)。 – math 2012-07-18 10:02:35