簡體   English   中英

如何從字符中讀取ASCII值並將其轉換為十六進制格式的字符串

[英]How to read ASCII value from a character and convert it into hexadecimal formatted string

需要將字符的值讀取為數字並為此找到對應的十六進制值。

#include <iostream>
#include <iomanip>
using namespace std;
int main() {
    char c = 197;
    cout << hex << uppercase << setw(2) << setfill('0') << (short)c << endl;
}

輸出:

FFC5

預期產量:

C5

問題是,當您使用char c = 197您正在溢出char類型,從而產生一個負數( -59 )。 從那里開始,轉換為較大類型無關緊要,它將保持為負數。

要完全理解為什么您必須知道二進制補碼是如何工作的。

基本上, -59192具有相同的二進制表示形式: 1100 0101 ,具體取決於以一種或另一種方式解釋的數據類型。 使用十六進制格式打印時,將使用二進制表示形式(存儲在內存中的實際值),產生C5

char轉換為short / unsigned short ,它將-59轉換為short / unsigned short表示形式,在兩種情況下均為1111 1111 1100 0101FFC5 )。

正確的方法是將初始值( 197 )存儲到一個變量,該變量的數據類型從一開始就可以表示它( unsigned charshortunsigned short ,...)。

暫無
暫無

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

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