關(guān)于C++中數(shù)據(jù)16進(jìn)制輸出的方法
在我們進(jìn)行串口編譯時(shí),往往要用到串口數(shù)據(jù),串口數(shù)據(jù)多是16進(jìn)制的0x16表示。在運(yùn)算過程中,我們得到的數(shù)據(jù)往往是10進(jìn)制,那么怎么將10進(jìn)制的數(shù)據(jù)轉(zhuǎn)換成16進(jìn)制呢?我在網(wǎng)上搜了很多種方法,最后在我導(dǎo)師的建議下使用了一種最最簡單的方法,供大家參考。
比如我們得到一個(gè)數(shù)據(jù):
double b = 123456789.987;
因?yàn)槲乙褂玫氖瞧湔麛?shù)部分,所以對(duì)w進(jìn)行數(shù)據(jù)轉(zhuǎn)換:
__int64 B = __int64(b);
我們就得到了64位整型的w1,接下來我們要將w1以0x16進(jìn)制的形式插入到一個(gè)數(shù)組中:
unsigned char A[46] = { 0x12, 0xAB, 0x34, 0xCD};因?yàn)?,B是以16進(jìn)制儲(chǔ)存在電腦里的,所以我們采用直接移位的方式,進(jìn)行插入,比如我要將B以4個(gè)字節(jié)的形式插入到A后:
A[4] = (B >> 24) & 0xFF; A[5] = (B >> 16) & 0xFF; A[6] = (B >> 8) & 0xFF; A[7] = (B >> 0) & 0xFF;
整體代碼如下:
#include<stdio.h>
int main()
{
double b = 123456789.987;
__int64 B = __int64(b);
unsigned char A[46] = { 0x12, 0xAB, 0x34, 0xCD };
A[4] = (B >> 24) & 0xFF;
A[5] = (B >> 16) & 0xFF;
A[6] = (B >> 8) & 0xFF;
A[7] = (B >> 0) & 0xFF;
for (int i = 0; i < 8; i++)
{
printf("%02X ", A[i]);
}
return 0;
}運(yùn)行結(jié)果如下:

到此這篇關(guān)于關(guān)于C++中數(shù)據(jù)16進(jìn)制輸出的方法的文章就介紹到這了,更多相關(guān)C++ 16進(jìn)制輸出內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
一步步從底層入手搞定C++引用與內(nèi)聯(lián)函數(shù)
內(nèi)聯(lián)函數(shù)是代碼插入到調(diào)用者代碼處的函數(shù),內(nèi)聯(lián)函數(shù)通過避免被調(diào)用的開銷來提高執(zhí)行效率,下面這篇文章主要給大家介紹了關(guān)于如何從底層入手搞定C++引用與內(nèi)聯(lián)函數(shù)的相關(guān)資料,需要的朋友可以參考下2023-03-03
C++實(shí)現(xiàn)LeetCode(152.求最大子數(shù)組乘積)
這篇文章主要介紹了C++實(shí)現(xiàn)LeetCode(152.求最大子數(shù)組乘積),本篇文章通過簡要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下2021-07-07
C語言中遞歸的實(shí)際應(yīng)用與經(jīng)典問題
函數(shù)以及函數(shù)的遞歸調(diào)用是學(xué)習(xí)C語言必須要掌握的內(nèi)容,且遞歸作為經(jīng)典的算法思想被廣泛應(yīng)用于程序設(shè)計(jì)中,下面這篇文章主要給大家介紹了關(guān)于C語言中遞歸的實(shí)際應(yīng)用與經(jīng)典問題的相關(guān)資料,需要的朋友可以參考下2021-09-09

