在使用變數的時候,直接對變數進行操作,無需管是大端還是小端序,但是
以位元組為單位進行操作時就需要考慮;
比如:int numports;
numports |= 1;
這樣子numports的值就是1了
如果這樣: unsigned char *s = (unsigned char *)&numports,然後再對s進行操作時,
這就是以位元組為單位進行操作,要注意大小端序
一般在乙個位元組對齊 和 四個位元組對齊時,對結構的記憶體拷貝會出現問題,解決辦法有以下幾個:
要麼將兩種位元組對齊方式統一,但是會遇到訊號量需要分配偶位址才能進行原子操作的時候,這個辦法就行不通了;
第二種就是在四位元組對齊的模式中,將非unsigned char 型別的全部弄成unsigned char 型別
,這樣子,只要稍稍處理就可以完整再現資料
關於位元組對齊的總結
1 使用預設的位元組對齊方式。規則1 各成員變數存放的起始位址相對於結構的起始位址的偏移量必須為該變數的型別所占用的位元組數的倍數。注 下面列出常用型別的對齊方式 vc6.0,32位系統 型別 對齊方式 變數存放的起始位址相對於結構的起始位址的偏移量 char 偏移量必須為sizeof char 即...
大小端 位元組序與位元序
前兩天被問到乙個關於大小端的問題,很久沒接觸,回答的支支吾吾,說到底還是自己對這個了解的不徹底,今天補上。這裡明確下,大小端包括位元組序和位元序。他們的概念其實也是類似的,區別就如同他們名字,最小排序單位分別是位元組與位元。如果不是做晶元或者網路 通訊協議,搞計算機的一般都不涉及也不關心位元序。關於...
大小端對位元組序和位序的影響
1 位元組序 byte order 大端儲存格式 即多位元組資料的高位元組儲存在低位址中,而低位元組資料存放在高位址中。小端儲存格式 即多位元組資料的高位元組儲存在高位址中,而低位元組資料存放在低位址中。例子 short型別的資料 0x0201 大端儲存格式 存放內容 0x02 0x01 記憶體位址...