日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > c/c++ >内容正文

c/c++

C++笔记-char*存储的二进制转成long long十进制(读串口的时候经常用到)

發布時間:2025/3/15 c/c++ 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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十进制(读串口的时候经常用到)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。