如何將有符號數轉化為BCD碼?

2021-10-21 03:30:06 字數 668 閱讀 8319

在做協議傳輸時,通常需要將資料轉化為bcd碼格式用於傳輸,例如水資源206通訊協議,通常我們在處理資料轉化時,用的往往是無符號數的轉化,也就是將unsigned int 或者unsigned long int 型別的資料轉化為bcd碼格式,這個相對來說比較方便,按照hex數轉化為bcd碼資料的計算方法轉化就可以了,但是有些資料是有符號數格式的,比如水位資料,水位資料的真實值等於水位基值+水位感測器測量值,按照協議要求,水位的取值範圍是-7999到+7999,當我們計算出負值的時候應該怎麼轉換呢?

首先,我們要明白負數在微控制器或者編譯器中的儲存格式,負數是以補碼的形式儲存的,這樣我們在做hex數轉化為bcd碼資料的時候不能按照正數hex數轉化為bcd碼數的計算方法,這裡推薦使用下面的方法:第一,我們判斷一下計算結果是不是負數,如果是負數,那麼我們先將其轉化為正數;第二,我們按正常轉化方法將此正數轉化為bcd碼;第三,手動新增負號,即最高位填負1,程式示例如下:

if(currentlevel<0)

{currentlevel = 0-currentlevel;

hex32tobcd32(currentlevel,currentlevel_bcd);  //此函式為常用hex數轉bcd碼函式,比較簡單

currentlevel_bcd[3] =(currentlevel_bcd[3] | 0xf0); //206協議規定高四位表示符號位

如何將使用者流量轉化為銷量

我們所熟悉的小公尺體系,手機 電腦 電視 空調 平衡車 充電寶 書包 眼鏡 電飯煲 電熱壺 無線耳機 空氣淨化器 智慧型音響等等,基本上我們想要的,都可以在小公尺零售店買到,而且只要是小公尺商標的產品,都是極高價效比的代表,公尺粉不僅買了手機,也買了耳機,還買了別的,使用者得到了價效比很高的產品,企...

如何將freemarker檔案轉化為html檔案

最近在做靜態的頁面報表服務,將前端生成的ftl檔案轉化為html格式的檔案,供後面合成pdf使用。freemarker基礎可以參見 freemarker官方文件 前期準備 需要乙個基礎的ftl格式的檔案。乙個freemarker中注入的物件 這裡面單獨命名了乙個類 實體類 author xia pu...

如何將字串轉化為日期

一 問題闡述 本來以為把乙個string轉化成date沒什麼難得,用個 dateformat不就好了嗎?結果卻總報錯,仔細檢查才發現原來這裡面還是有個小細節要注意的。二 正確的 實現 dateformat format new dateformat yyyy mm dd string str 201...