這裡有一個程式碼
typedef struct{
int LENGTH;
}So;
int main(){
So SOURCE;
//fpr指針指向檔案
fread((char*)&SOURCE.x, 2,1, fpr);//讀兩個byte為一組,讀一次
printf("%x",SOURCE.x);
}
假如原檔案是0034
但當我printf出來時卻是3400
請問這跟指標指向的位置有關嗎?
為甚麼兩個BYTE會交換位置呢
我怕講的太過技術性你可能沒辦法很了解。所以我用比較白話一點的說法好了。
我推測你這是一個機器語言的檔案。配合一下「淺水員」跟你說的東西。
其實這可以用一個說法來解釋。就是一般我們由左至右是從大位數書寫。
但機器語言是從小位數中一個byt由左至右的書寫過去。
這也是為何一般程式語言裏,有時需要定義區塊大小的因素。
如數值10來計算。一般int來說,其是定義在65535。也就是兩個byt的計算
在其10進位的10數值。其會轉換成 0A。因需要2個BYT的情況。所以會補0變成 00 0A
但用機器語言的情況寫入時,其寫入會從低位數讀取再寫入。
也就是說。00 0A的值。它會先從 0A 先寫入。然後再來是 00
這樣子的情況下。你在其檔案的內容。就會是 0A 00的值。
其實如果你以前有在玩遊戲用過金手指的話。因該都會發現要計算或修改。都是需要用倒序的方式來判斷讀取。