C++笔记-char*存储的二进制转成long long十进制(读串口的时候经常用到)
生活随笔
收集整理的這篇文章主要介紹了
C++笔记-char*存储的二进制转成long long十进制(读串口的时候经常用到)
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
目錄
?
背景
概念及源碼
?
?
背景
在讀串口數(shù)據(jù)的時候,很多時間讀取的是二進(jìn)制數(shù)據(jù),很多情況下都是uchar的數(shù)組,這數(shù)字一般比int(4字節(jié))大比long long(8字節(jié))小。
如下例子:
今天就在遠(yuǎn)程給客戶敲代碼,花了點時間,在此記錄下。以后直接可以拷貝。
?
概念及源碼
這里邏輯如下。
把為滿足64位的數(shù)據(jù)補(bǔ)充為64位。
使用pow()進(jìn)行累加。
代碼如下:
#include <iostream> #include <math.h> using namespace std;int main(int argc, char *argv[]) {char *dataPtr = "1111111111111111";cout << dataPtr << endl;string str = dataPtr;string fullStr;for(int i = 0; i < 8 * 8; i++)fullStr += "0";fullStr += str;cout << fullStr << endl;long long data = 0;int lenth = fullStr.length();const char *p = fullStr.c_str();for(int i = 0; i < lenth; i++){if(p[lenth - 1 - i] != '0'){data += pow(2, i);}}cout << data << endl;return 0; }程序運(yùn)行截圖如下:
第一行是原始數(shù)據(jù)。
第二行是補(bǔ)充數(shù)據(jù)。
最后一行是轉(zhuǎn)10進(jìn)制后的數(shù)據(jù)。
換一串?dāng)?shù)據(jù)看看。
總結(jié)
以上是生活随笔為你收集整理的C++笔记-char*存储的二进制转成long long十进制(读串口的时候经常用到)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Maven工作笔记-jar包打入本地仓库
- 下一篇: Arduino笔记-对开关的基本认识