簡體   English   中英

將16位轉換為4個字符(以十六進制表示)

[英]Convert 16 bits to 4 char ( in Hexadecimal)

我想將16位轉換為4個十六進制字符。 例如,十六進制的16位1101 1010 1101 0001是DAD1,十進制的是56017。現在我想將此16位轉換為DAD1作為字符,以便可以使用該字符寫入文本文件。

我的編碼部分,變量“ CRC”是CRC校驗和的結果。 現在,我想將16位“ CRC”轉換為DAD1(大寫字母)這4個字符。

cout << hex << CRC<<endl;
char lo = CRC & 0xFF;
char hi = CRC >> 8;
cout << hi << endl;
cout << lo;

*******結果********

DAD1

嘗試這個:

#include <iostream>
#include <bitset>
#include <string>
int main()
{
    int i = 56017;
    std::cout <<hex <<i << std::endl;
    std::bitset<16> bin = i;
    std::string str = bin.to_string();
    std::bitset<8> hi(str.substr(0, 8));
    std::bitset<8> lo(str.substr(8, 8));
    std::cout << bin << std::endl;
    std::cout << hi << " " << hi.to_ullong() << std::endl;
    std::cout << lo << " " << lo.to_ullong() << std::endl;
}

或者你也可以

std::cout <<hex << (CRC & 0xFF)<< std::endl;
std::cout << hex << (CRC >> 8) << std::endl;

輸出:

在此處輸入圖片說明

嘗試這個 :

#include <iostream>
#include <bitset>
#include <limits>

int main()
{
    int i = 56017;
    std::bitset<std::numeric_limits<unsigned long long>::digits> b(i); 
    std::cout<< std::hex << b.to_ullong();    
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM