C int和byte的相互轉換

2021-06-04 11:34:24 字數 987 閱讀 8516

**:

下面介紹三種方法來進行轉換。

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