一直不是很明白delphi中 integer 在記憶體中儲存方式。經實驗總結如下
# integer記憶體儲存方式 :
高位元組在前,低位元組在後。 如 $12 34 56 78 在記憶體中為 $78 56 34 12 ,即
[3] = $78 120
[2] = $56 86
[1] = $34 52
[0] = $12 18
# 此儲存方式為主機位元組儲存,如需進行網路資料互動,需呼叫 htonl ,htons等函式進行轉換
轉換後,可改變資料儲存順序。
eg:
varivalue: integer;
arybuf: array[ 0..3 ] of byte;
begin
ivalue := $12345678; //位元組 $12 $34 $56 $78
move( ivalue, arybuf, sizeof( integer ) ); //arybuf[0] = $12 arybuf[1] = $34 arybuf[2] = $56 arybuf[3] = $78
ivalue := htonl( ivalue ); //主機位元組與網路字段轉換
move( ivalue, arybuf, sizeof( integer ) ); //arybuf[0] = $78 arybuf[1] = $56 arybuf[2] = $34 arybuf[3] = $12
end;
注: htonl 函式使用應引用 winsock單元
還是記憶體 記憶體
對於記憶體一點都不了解到現在感覺上已經蠻了解的,可是事實上又遇到麻煩了 實在是想不通,怎麼會出現問題呢?重新審視一下動態開闢記憶體的操作 1.對於函式以及函式內的臨時變數我們不需要考慮它們的記憶體空間,因為在函式執行結束的時候會自動釋放掉.真的是這樣的嗎?如果是這樣的話,對於固定陣列我若開闢乙個足夠...
《記憶體管理》 記憶體
1.c c 記憶體分布 我們先來看下面的一段 和相關問題 int globalvar 1 static int staticglobalvar 1 void test char char2 abcd char pchar3 abcd int ptr1 int malloc sizeof int 4 ...
記憶體分配 記憶體分段 記憶體分頁 虛擬記憶體
記憶體應容納作業系統和各種使用者程序,因此應該盡可能有效地分配記憶體。通常,我們需要將多個程序同時放在記憶體中。因此我們需要考慮,如何為輸入佇列中需要調入記憶體的程序分配記憶體空間。在採用連續記憶體分配時,每個程序位於乙個連續的記憶體區域,與包含下乙個程序的記憶體相連。1.最為簡單的記憶體分配方法之...