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...