C++笔记-char*存储的二进制转成long long十进制(读串口的时候经常用到)
生活随笔
收集整理的這篇文章主要介紹了
C++笔记-char*存储的二进制转成long long十进制(读串口的时候经常用到)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
目錄
?
背景
概念及源碼
?
?
背景
在讀串口數據的時候,很多時間讀取的是二進制數據,很多情況下都是uchar的數組,這數字一般比int(4字節)大比long long(8字節)小。
如下例子:
今天就在遠程給客戶敲代碼,花了點時間,在此記錄下。以后直接可以拷貝。
?
概念及源碼
這里邏輯如下。
把為滿足64位的數據補充為64位。
使用pow()進行累加。
代碼如下:
#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; }程序運行截圖如下:
第一行是原始數據。
第二行是補充數據。
最后一行是轉10進制后的數據。
換一串數據看看。
總結
以上是生活随笔為你收集整理的C++笔记-char*存储的二进制转成long long十进制(读串口的时候经常用到)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Maven工作笔记-jar包打入本地仓库
- 下一篇: s3c2440移植MQTT