作者cophie (內褲魔)
看板C_and_CPP
標題Re: [問題] C語言int轉byte寫入char
時間Tue Dec 7 23:57:16 2010
請問一下如果剛好跟這題相反
想要將四個char合成int的話
char temp[4];
int *num;
for(int i=0;i<4;i++)
num=(int*)temp[i];
我的想法是這樣 不過根本compile不過
請益各位高手了
※ 引述《pico2k (風月)》之銘言:
: ※ 引述《Rebeel (123)》之銘言:
: : 遇到的問題: (題意請描述清楚)
: : 今天面試被問到一個問題
: : 當場掛住= =||
: : 回來後查了一些資料還是不太懂
: : 感覺是很基礎的問題但是從來沒想過...
: : 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++的範例
: : 但是跟我想問的好像不太一樣...
: ...
: int a = 10;
: char *c = null;
: c = (char*)&a;
: a1 = *c;
: a2 = *(c+1);
: a3 = *(c+2);
: a4 = *(c+3);
: ...
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 125.230.54.240
→ james732:union 12/07 23:58
推 purpose:"12" -> ('1' - '0')*10 + ('2' - '0') 12/08 00:02
推 tomet:char temp[4]={1,2,3,4}; 12/08 00:11
→ tomet:int num=0; 12/08 00:11
→ tomet:for(int i=0;i<3;i++) 12/08 00:11
→ tomet: num=(num+temp[i])<<8; 12/08 00:12
→ tomet:num+=temp[3]; 12/08 00:12
→ stupid0319:以上的高手想法完全不一樣...... 12/08 00:15
推 Yshuan:2樓想表示char轉數字要注意bit表示 綜合3樓應該就原PO要得 12/08 00:55
推 tingyushyu:char temp[4]; int num; num=*((int *)temp); 12/08 02:01
→ tingyushyu:只不過上面的方法可能要注意endian的問題 12/08 02:01
→ tingyushyu:假設int是4byte 12/08 02:03
→ stupid0319:我以為int *num = (int*)temp;這樣就可以了吧 12/08 02:58
推 stool100:一樓的umion才是王道 12/08 11:51
推 horngsh:推union 12/08 12:49
→ cophie:感謝樓上幾位 小弟在此一拜 12/08 20:45
推 sandr1983:union很好用. 不過好像還要檢查 大小印地安 12/09 00:44
→ xatier:推union 12/09 07:19