[問題] C語言int轉byte寫入char

看板C_and_CPP作者 (123)時間15年前 (2010/08/13 19:16), 編輯推噓4(408)
留言12則, 8人參與, 最新討論串1/4 (看更多)
遇到的問題: (題意請描述清楚) 今天面試被問到一個問題 當場掛住= =|| 回來後查了一些資料還是不太懂 感覺是很基礎的問題但是從來沒想過... 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

08/13 19:20, , 1F
你可以自己定義怎麼存到a1,a2,a3,a4
08/13 19:20, 1F

08/13 19:20, , 2F
在記憶體中因little endian是長成0A 00 00 00 要直接存進
08/13 19:20, 2F

08/13 19:21, , 3F
去不就除0xff取商嗎??
08/13 19:21, 3F

08/13 19:23, , 4F
講錯256才對
08/13 19:23, 4F

08/13 19:29, , 5F
用&取值?
08/13 19:29, 5F

08/13 19:38, , 6F
那int a=10 所佔的4個byte裡面是什麼呢 <== 二進位表示法
08/13 19:38, 6F

08/13 19:43, , 7F
暴力作法: copy( (char*)&a, (char*)(&a + 1), &a4 );
08/13 19:43, 7F

08/13 19:57, , 8F
如果a1~a4隨自己訂的話,我會選擇用union
08/13 19:57, 8F

08/13 20:01, , 9F
這題目要注意有沒有想要問endian的問題就是:)
08/13 20:01, 9F

08/13 20:13, , 10F
對啊 還要考慮endian
08/13 20:13, 10F

08/13 20:32, , 11F
換個endian再加reverse 就好, STL 很方便的 :P
08/13 20:32, 11F

08/13 20:39, , 12F
看到標題... 耍笨了 > <
08/13 20:39, 12F
文章代碼(AID): #1CPIcY_Y (C_and_CPP)
文章代碼(AID): #1CPIcY_Y (C_and_CPP)