C 對S5Time資料格式的轉換

2022-07-17 04:51:09 字數 985 閱讀 6068

最近做的乙個專案,其中需要對西門子plc中定時器的間隔時間進行設定,資料格式為s5time。

s5time資料長度為兩個位元組,轉成16進製制數後,第一位表示時間基準,第二至四位是用bcd碼表示的時間值。時間基準的二進位制**如下:

10ms    00

100ms    01

1s      10

10s      11

舉個例子,時間間隔值為5s時,轉成16進製制的s5time數就是0x0500,也可以是0x2005等,在plc中cpu會自動選擇較小的時間基準來對數值進行表示,所以從plc中讀到的以上數值應該是0x0500。通過opc讀取到的為十進位制表示的整數值,因此用c#讀取和設定的時候都必須先進行轉換。

知道原理,轉換就很容易了,**如下:

s5time格式轉換

private

intconverts5timetoint32(

intinit)

result

=(baiwei

*100

+shiwei *10

+gewei)

*beishu;

return

result;

}private

intconvertint32tos5time(

intinit)

elseif(

0<=

init /10

&&init /10

<=

4095

)elseif(

0<=

init

/100

&&init

/100

<=

4095

)elseif(

0<=

init

/1000

&&init

/1000

<=

4095

)return

result;

}

C 資料格式轉換

本文主要講述整數 二進位制字串與十六進製制字串之間的轉換。使用 ltoa s 函式可以將整數轉換為二進位制字串。該函式的作用是將乙個 long 整數轉換為字串。ltoa s 函式有很多格式,其中的乙個格式為 errno t ltoa s long value,char str,int radix 其...

C 常用的資料格式轉換

用dataformatstring格式化gridview 在 gridview裡面顯示資料,要顯示的資料有好多位小數,就想讓它只顯示兩位小數,在delphi裡,直接用displayformat就行了,在.net中,查了半天msdn,發現使用dataformatstring是可以實現這個功能的,但是怎...

stingstream的資料格式轉換

如果想從字串中提取 整形 浮點型 等資料可以通過stringstream來轉換。include 在使用stringsteam時注意對記憶體的處理。例如 int circle 3 stringstream test string str int num float f while circle cir...