**:
下面介紹三種方法來進行轉換。
(1) 在.net framework類庫的system名字空間中有個叫做
bitconverter
的類,它是專門用來進行這種轉換的。
主要方法:
1> getbytes()方法 可以將大多數的簡單型別轉化為byte;
2> toint()/tostring()等方法 用來將乙個byte轉換成乙個基本型別(primitive type)
注意:bitconverter類的行為取決於硬體架構(**在該硬體架構上執行)的位元組順序(endianness)。
如果你將bit儲存為可以在許多不同平台上讀取的乙個檔案格式,那麼就會出問題。bitconverter有乙個公有的islittleendian欄位,你可以檢視它是如何執行的,但遺憾的是,你並不能改變它。
(2) 通過
手動位移
(bit shifting)來進行轉換:
b = new byte ;
u = (uint)(b[0] | b[1] << 8 |
b[2] << 16 | b[3] << 24);
b[0] = (byte)(u);
b[1] = (byte)(u >> 8);
b[2] = (byte)(u >> 16);
b[3] = (byte)(u >> 24);
用這種方法就可以避免位元組順序問題,因為可以完全控制位元組的位置。但是比較麻煩
(3) 如果不介意用不安全的**——可以通過直接的
記憶體拷貝
來實現轉換,把乙個指向byte array的指標(pointer)轉換成乙個指向integer型別的指標,然後取它的值(dereference):unsafe
同bitconverter一樣,這個方法的執行結果取決於**在何種硬體上執行。
如果要進行很多這種轉換,比如說在乙個迴圈中,而且想得到最佳效能,那麼建議用最後兩種方法中的一種。bitconverter有些慢,儘管區別不大。
C struct 和byte 相互轉換
一 c 結構體 1 定義與c 對應的c 結構體 在c 中的結構體不能定義指標,不能定義字元陣列,只能在裡面定義字元陣列的引用。c 的訊息結構體如下 訊息格式 4 16 4 4 28個位元組 struct cs message c 定義的結構體如下 structlayout layoutkind.se...
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...