看板 C_and_CPP 關於我們 聯絡資訊
遇到的問題: (題意請描述清楚) 今天面試被問到一個問題 當場掛住= =|| 回來後查了一些資料還是不太懂 感覺是很基礎的問題但是從來沒想過... int a 為1個4 byte char a1,a2,a3,a4 為4個 1 byte 問題:如何將 int a □□□□ 分別寫入 a1 □ a2 □ a3 □ a4 □ 首先第一個疑問是,例如int a=10 好了,那int a=10 所佔的4個byte裡面是什麼呢? 光是這個我就搞不懂了= = 再來是要寫到char裡面 一個char不是一個字元嗎? int a=10 那 4個byte不會是1010吧! 既然不是剛好 4個字元 又要怎麼寫到 4個char裡面? 上網查了一下有些Java或C++的範例 但是跟我想問的好像不太一樣... -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 118.165.229.70
ericinttu:你可以自己定義怎麼存到a1,a2,a3,a4 08/13 19:20
winest:在記憶體中因little endian是長成0A 00 00 00 要直接存進 08/13 19:20
winest:去不就除0xff取商嗎?? 08/13 19:21
winest:講錯256才對 08/13 19:23
x000032001:用&取值? 08/13 19:29
james732:那int a=10 所佔的4個byte裡面是什麼呢 <== 二進位表示法 08/13 19:38
loveme00835:暴力作法: copy( (char*)&a, (char*)(&a + 1), &a4 ); 08/13 19:43
loveflames:如果a1~a4隨自己訂的話,我會選擇用union 08/13 19:57
VictorTom:這題目要注意有沒有想要問endian的問題就是:) 08/13 20:01
legendmtg:對啊 還要考慮endian 08/13 20:13
loveme00835:換個endian再加reverse 就好, STL 很方便的 :P 08/13 20:32
loveme00835:看到標題... 耍笨了 > < 08/13 20:39