C#字節流通信格式


類似通信格式的實現關鍵點:

byte數組轉float的實現,BitConvetor.toSingle()

float類型轉by,BitConverter.GetBytes

#客戶端發送
public
byte[] funFloattoBytes(byte command,float[] coordinate_camera) { List<byte> bufferList = new List<byte>(); bufferList.Add(command); for (int i = 0; i < coordinate_camera.Count(); i++) { byte[] bufferMid = BitConverter.GetBytes(coordinate_camera[i]); bufferList.AddRange(bufferMid); } return bufferList.ToArray(); } #服務器端接收 //客戶端連接成功后,服務器接收客戶端發來的消息 byte[] buffer = new byte[1024 * 1024 * 2]; //實際接收到的字節數 int r = sendScoket.Receive(buffer); if (r == 0) { break; } //string str = Encoding.UTF8.GetString(buffer, 0, r); //ShowMsg(sendScoket.RemoteEndPoint + ":" + str); byte command=buffer[0]; float[] receiveCommandFloat=new float[4] ; for (int i = 0; i < receiveCommandFloat.Count(); i++) { receiveCommandFloat[i] = BitConverter.ToSingle(buffer, 4 * i+1); } ShowMsg(command,receiveCommandFloat);

 拓展:

float型數據與字節數組的轉化

在c#中可以使用BitConverter類中的函數進行轉換,如下:

名稱

說明

GetBytes(Double)

以字節數組的形式返回指定的雙精度浮點值。

GetBytes(Single)

以字節數組的形式返回指定的單精度浮點值。

ToDouble

返回由字節數組中指定位置的八個字節轉換來的雙精度浮點數。

ToSingle

返回由字節數組中指定位置的四個字節轉換來的單精度浮點數。

BitConverter類進行基礎數據類型與字節數組之間的相互轉換,此類便於操作基本形式的類型。一個字節定義為一個 8位無符號整數。包含的方法如下:

名稱

說明

DoubleToInt64Bits

將指定的雙精度浮點數轉換為 64 位有符號整數。

GetBytes(Boolean)

以字節數組的形式返回指定的布爾值。

GetBytes(Char)

以字節數組的形式返回指定的 Unicode 字符值。

GetBytes(Double)

以字節數組的形式返回指定的雙精度浮點值。

GetBytes(Int16)

以字節數組的形式返回指定的 16 位有符號整數值。

GetBytes(Int32)

以字節數組的形式返回指定的 32 位有符號整數值。

GetBytes(Int64)

以字節數組的形式返回指定的 64 位有符號整數值。

GetBytes(Single)

以字節數組的形式返回指定的單精度浮點值。

GetBytes(UInt16)

以字節數組的形式返回指定的 16 位無符號整數值。

GetBytes(UInt32)

以字節數組的形式返回指定的 32 位無符號整數值。

GetBytes(UInt64)

以字節數組的形式返回指定的 64 位無符號整數值。

Int64BitsToDouble

將指定的 64 位有符號整數轉換成雙精度浮點數。

ToBoolean

返回由字節數組中指定位置的一個字節轉換來的布爾值。

ToChar

返回由字節數組中指定位置的兩個字節轉換來的 Unicode 字符。

ToDouble

返回由字節數組中指定位置的八個字節轉換來的雙精度浮點數。

ToInt16

返回由字節數組中指定位置的兩個字節轉換來的 16 位有符號整數。

ToInt32

返回由字節數組中指定位置的四個字節轉換來的 32 位有符號整數。

ToInt64

返回由字節數組中指定位置的八個字節轉換來的 64 位有符號整數。

ToSingle

返回由字節數組中指定位置的四個字節轉換來的單精度浮點數。

ToString( array<Byte []()>[])

將指定的字節數組的每個元素的數值轉換為它的等效十六進制字符串表示形式。

ToString( array<Byte []()>[], Int32)

將指定的字節子數組的每個元素的數值轉換為它的等效十六進制字符串表示形式。

ToString( array<Byte []()>[], Int32, Int32)

將指定的字節子數組的每個元素的數值轉換為它的等效十六進制字符串表示形式。

ToUInt16

返回由字節數組中指定位置的兩個字節轉換來的 16 位無符號整數。

ToUInt32

返回由字節數組中指定位置的四個字節轉換來的 32 位無符號整數。

ToUInt64

返回由字節數組中指定位置的八個字節轉換來的 64 位無符號整數。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM