之前一直使用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進製形式,同時分為整數部分和...