在某些時刻,我們需要對32位的int類型數據轉換成byte數據進行傳輸、存儲等。
這時,就需要把 32位的int類型數據轉存到 4個字節的byte數組中,或者是從4個字節的byte數組中轉存為32位的int類型數據。
在C/C++中,我們可以直接使用memcpy()函數來實現,但是在C#中卻沒有函數可以直接把 32位的int類型數據轉換成byte數據。
////// 把int32類型的數據轉存到4個字節的byte數組中 /// /// int32類型的數據 /// 4個字節大小的byte數組 ///static bool ConvertIntToByteArray(Int32 m, ref byte[] arry) { if (arry == null) return false; if (arry.Length < 4) return false; arry[0] = (byte)(m & 0xFF); arry[1] = (byte)((m & 0xFF00) >> 8); arry[2] = (byte)((m & 0xFF0000) >> 16); arry[3] = (byte)((m >> 24) & 0xFF); return true; }
byte [] buf = new byte[4]; bool ok = ConvertIntToByteArray(0x12345678, ref buf);
反過來的話,可以直接使用 BitConverter.ToInt32方法來實現:
Int32 dd = BitConverter.ToInt32(buf, 0);buf就是上面使用過的buf。
int --> BYTE[]
int data = 0xFFFFFFFF; unsigned char buf[4]; memcpy(buf, &data, sizeof(int));
memcpy(&data, buf, 4);
這個轉換的實現不難,只要掌握了數據的存儲格式就知道了。
特此mark一下!