程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> C#入門知識 >> C# int32與byte[] 互轉 / C/C++ int與BYTE[]互轉

C# int32與byte[] 互轉 / C/C++ int與BYTE[]互轉

編輯:C#入門知識

在某些時刻,我們需要對32位的int類型數據轉換成byte數據進行傳輸、存儲等。

這時,就需要把 32位的int類型數據轉存到 4個字節的byte數組中,或者是從4個字節的byte數組中轉存為32位的int類型數據。

在C/C++中,我們可以直接使用memcpy()函數來實現,但是在C#中卻沒有函數可以直接把 32位的int類型數據轉換成byte數據。


C#: 32位的int類型數據轉換成4個字節的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);


這樣就可以實現 32位的int類型數據轉換成4個字節的byte數據了。

反過來的話,可以直接使用 BitConverter.ToInt32方法來實現:

            Int32 dd = BitConverter.ToInt32(buf, 0);
buf就是上面使用過的buf。


C/C++ 實現32位int數據與BYTE[]互轉


int --> BYTE[]

	int data = 0xFFFFFFFF;
	unsigned char buf[4];

	memcpy(buf, &data, sizeof(int));

BYTE[] --> int

	memcpy(&data, buf, 4);


這個轉換的實現不難,只要掌握了數據的存儲格式就知道了。

特此mark一下!


  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved