int 與 byte 的相互轉換

2021-06-13 22:13:42 字數 1134 閱讀 1547

int 與 byte 的相互轉換

1. 最普通的方法

從byte 到 uint

b = new byte ;

u = (uint)(b[0] | b[1] << 8 | b[2] << 16 | b[3] << 24);

從int 到 byte

b[0] = (byte)(u);

b[1] = (byte)(u >> 8);

b[2] = (byte)(u >> 16);

b[3] = (byte)(u >> 24);

2. 使用 bitconverter (強力推薦)

從int 到byte

byte b = bitconverter.getbytes(

0xba5eba11 );

// 

從byte到int

uint u = bitconverter.touint32(

new byte ,0 ); // 0xfa115afe

3. unsafe** (雖然簡單,但需要更改編譯選項)

unsafe

4. 使用marshal類    intptr ptr = marshal.allochglobal(4); // 要分配非託管記憶體

byte b= new byte[4];

//從byte 到 int

marshal.copy(b, 0, ptr, 4);

int u = marshal.readint32(ptr);

//從int 到byte

marshal.writeint32(ptr, u);

marshal.copy(ptr,b,0,4);

marshal.freehglobal(ptr); // 最後要記得釋放記憶體

使用第4種看起來比較麻煩,實際上,如果想把結構(struct)型別轉換成byte,則第4種是相當方便的。例如:

int len = marshal.sizeof(typeof(mystruct));

mystruct o;

byte arr = new byte[len];//{};

intptr ptr = marshal.allochglobal(len);

tryfinally

return o;

int 與 byte 的相互轉換

關於 int 與 byte 的相互轉換,mattias sjogren 介紹了3種方法。請參見 將integer轉換成byte array 其實應該還有不少方法。在這裡,我歸納了包括mattias sjogren在內的4種方法。int 與 byte 的相互轉換 沐楓網誌 1.最普通的方法 2.使用 ...

byte 與string相互轉換

c 中byte與string相互轉換及string與sql server中nvarchar的轉換問題 最近在寫專業實踐 資料庫加密,找出以前寫的md5 des程式,編成兩個動態鏈結庫md5.dll des.dll,在這把我遇到的問題分享下 1 byte與string的相互轉換 首先在c 中strin...

bitmapimage與byte 相互轉換

wpf image byte wpf bitmapimage 有時要實現bitmapimage與byte相互轉換,這裡實現兩個靜態方法,直接呼叫即可。byte轉換為bitmapimage public static bitmapimage bytearraytobitmapimage byte by...