看板 C_and_CPP 關於我們 聯絡資訊
開發平台(Platform): (Ex: VC++, GCC, Linux, ...) linux 額外使用到的函數庫(Library Used): (Ex: OpenGL, ...) 問題(Question): 輸出結果跟我想的不一樣 餵入的資料(Input):預期的正確結果(Expected Output): 12ab34cd 0xcd 0x34 0xab 0x12 錯誤結果(Wrong Output):程式碼(Code):(請善用置底文網頁, 記得排版) 1 #include <stdio.h> 2 3 union endian 4 { 5 int i; 6 unsigned char bytes[4]; 7 }; 8 union endian order; 9 10 int main(int argc,char* argv[]) 11 { 12 int i; 13 order.i=0x12ab34cd; 14 15 printf("%x\n",order.i); 16 17 for(i= 0;i<sizeof(int);i++) 18 printf("0x%x\t",order.bytes[i]); 19 20 printf("\n"); 21 return 0; 22 } 補充說明(Supplement): 印出結果是從0xcd開始往回印 可是為何不是從0x12開始印??? 此外,若改變第五行的unsigned char為char cd和ab印出來分別變成0xffffffcd,0xffffffab 感覺我的問題蠻簡單的 可是實在想不出為啥= =a 請各位前輩給個hint 謝謝!! -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 59.120.3.96
azureblaze:google endianness 05/03 18:49
mail6543210:byte order: little/big endian 05/03 18:51
DarkPrincex:首先要知道你寫這個程式的目的 05/03 20:04
wodada:這程式是我照範例KEY的,結果我用紙筆寫下,再用電腦跑 05/04 11:07
wodada:不過從網路上查到仍覺得只有一知半解,這程式有應用到啥 05/04 11:08
wodada:地方嗎??? 05/04 11:08
diabloevagto:這在嵌入式上控制io會比較有用到 05/04 11:52
azureblaze:你的範例沒跟你說這是做什麼的嗎? 05/04 12:35
MOONRAKER:範例說:不要問,很恐怖。 05/04 13:22
wodada:沒有,因為這是某教學機構的範例,可能要報名他們班才知道... 05/04 13:50
wodada:我只單純拿到講義而已....= =a 05/04 13:51