C 使用UDP傳輸浮點型資料

2021-10-10 04:45:43 字數 1301 閱讀 5358

之前一直使用udp協議傳輸整形資料,直接使用byte陣列傳遞就可以了。今天想傳遞double型的資料,在網上查了好久,發現需要解決的根本問題並不是如何通過udp傳輸什麼型別的資料,而是如何將double型無精度損失的存入byte陣列中。

流程:1、使用函式「bitconverter.getbytes」將double型資料轉為byte陣列,bitconvert:將基礎資料型別與位元組陣列相互轉換。相關資料可檢視:c# 使用bitconverter

2、將最終組成的待下發陣列(byte型別)直接使用udp傳輸。

網上關於如何通過udp傳輸的**示例很多,這裡就不再描述。以下原始碼僅實現了double型別資料組幀和解析的過程:

private void button1_click(object sender, eventargs e)

/// /// 組幀

///

///

/// 目標陣列

///

/// 源陣列

///

/// 起始下標

///

/// 傳入位元組總數

private void transport(ref byte databyte, byte buf,ref int count,int num)

}/// /// 將陣列轉為double

///

///

/// 源陣列

///

/// 起始下標

///

/// 轉換總位元組數

///

private double tansitiontodouble(byte databyte,int startindex,int num)

data = bitconverter.todouble(buf, 0);

return data;

}/// /// 將陣列轉為uint32

///

///

/// 源陣列

///

/// 起始下標

///

/// 轉換總位元組數

///

private double tansitiontouint32(byte databyte, int startindex, int num)

data = bitconverter.touint32(buf, 0);

return data;

}

執行結果如下圖:

UDP傳輸資料

我們先建立乙個server.js var dgram require dgram var serversocket dgram.createsocket udp4 伺服器異常 serversocket.on error function err 獲取訊息並 出去 serversocket.on me...

浮點型資料

浮點型資料是用來表示具有小數點的實數的。為什麼在c中把實數稱為浮點數呢?在c語言中,實數是以指數形式存放在儲存單元中的。乙個實數表示為指數可以有不止一種形式,如3.14159可以表示為 3.14159 10e0,0.314159 10e1,0.0314159 10e2,31.4159 10e 1,3...

C語言資料儲存 浮點型

浮點數的儲存 ieee 745 乙個例項 關於e的一些注意點 1 float 3.4e 38 3.4e38 2 double 1.7e 308 1.7e308 3 long double 3.4e 4932 1.1e4932 我們以9.5為例,首先將乙個浮點型資料轉化為2進製形式,同時分為整數部分和...