[問題] little endian的困擾

看板C_and_CPP作者 (poorplus)時間15年前 (2010/06/15 10:10), 編輯推噓10(1005)
留言15則, 8人參與, 最新討論串1/2 (看更多)
假設unsigned char a[4] = {1,2,3,4} n為int型態 則memcpy(&n, a, 4)後 n = 0x04030201 除了一個byte一個byte塞進去以外 不知是否有好的方法可以快速的讓 n = 0x01020304 謝謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 220.133.129.5

06/15 18:24, , 1F
int *n=(int*)a;
06/15 18:24, 1F

06/15 18:28, , 2F
乖乖的做 endian 轉換吧
06/15 18:28, 2F

06/15 18:33, , 3F
哈,1樓的方式錯了, sorry ^^
06/15 18:33, 3F

06/15 18:34, , 4F
改用big endian的電腦
06/15 18:34, 4F

06/15 18:37, , 5F
樓上 XD
06/15 18:37, 5F

06/15 18:39, , 6F
如果是我的話,或用union的方式,先把char的內容倒轉
06/15 18:39, 6F

06/15 18:39, , 7F
再賦值給n
06/15 18:39, 7F

06/15 18:50, , 8F
基本上那都是要保證你用的機器是 big-endian
06/15 18:50, 8F

06/15 18:50, , 9F
要沒有這個假設的話就只有二樓的解了
06/15 18:50, 9F

06/15 18:59, , 10F
字串倒轉可用std::reverse()
06/15 18:59, 10F

06/15 19:04, , 11F
06/15 19:04, 11F

06/15 19:09, , 12F
感謝大家的幫忙~小弟自己再多試一下
06/15 19:09, 12F

06/15 20:08, , 13F
嚴格來說這算陣列不算字串喔 ! > <
06/15 20:08, 13F

06/15 22:49, , 14F
__asm bswap??
06/15 22:49, 14F

06/17 01:14, , 15F
htonl, ntohl? 雖然不是說很好的解決辦法...@@
06/17 01:14, 15F
文章代碼(AID): #1C5r6FXq (C_and_CPP)
討論串 (同標題文章)
文章代碼(AID): #1C5r6FXq (C_and_CPP)