delphi integer 記憶體儲存與位元組轉換

2022-07-01 11:03:13 字數 867 閱讀 5415

一直不是很明白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.最為簡單的記憶體分配方法之...