簡體   English   中英

C++:十六進制轉十進制

[英]C++: Converting Hexadecimal to Decimal

我正在尋找一種輕松地將hex (十六進制)轉換為dec (十進制)的方法。 我找到了一種簡單的方法來執行此操作,例如:

int k = 0x265;
cout << k << endl;

但是我不能輸入265 無論如何,它是否可以像這樣工作:

輸入: 265

Output: 613

有沒有辦法做到這一點?

注意:我試過:

int k = 0x, b;
cin >> b;
cout << k + b << endl;

它不起作用。

我正在尋找一種輕松地將hex (十六進制)轉換為dec (十進制)的方法 我找到了一種簡單的方法來做到這一點,例如:

int k = 0x265;
cout << k << endl;

但是我不能輸入265 無論如何,它會像這樣工作:

輸入: 265

輸出: 613

反正有這樣做嗎?

注意:我已經嘗試過:

int k = 0x, b;
cin >> b;
cout << k + b << endl;

它不起作用。

我正在尋找一種輕松地將hex (十六進制)轉換為dec (十進制)的方法 我找到了一種簡單的方法來做到這一點,例如:

int k = 0x265;
cout << k << endl;

但是我不能輸入265 無論如何,它會像這樣工作:

輸入: 265

輸出: 613

反正有這樣做嗎?

注意:我已經嘗試過:

int k = 0x, b;
cin >> b;
cout << k + b << endl;

它不起作用。

我正在尋找一種輕松地將hex (十六進制)轉換為dec (十進制)的方法 我找到了一種簡單的方法來做到這一點,例如:

int k = 0x265;
cout << k << endl;

但是我不能輸入265 無論如何,它會像這樣工作:

輸入: 265

輸出: 613

反正有這樣做嗎?

注意:我已經嘗試過:

int k = 0x, b;
cin >> b;
cout << k + b << endl;

它不起作用。

我正在尋找一種輕松地將hex (十六進制)轉換為dec (十進制)的方法 我找到了一種簡單的方法來做到這一點,例如:

int k = 0x265;
cout << k << endl;

但是我不能輸入265 無論如何,它會像這樣工作:

輸入: 265

輸出: 613

反正有這樣做嗎?

注意:我已經嘗試過:

int k = 0x, b;
cin >> b;
cout << k + b << endl;

它不起作用。

我正在尋找一種輕松地將hex (十六進制)轉換為dec (十進制)的方法 我找到了一種簡單的方法來做到這一點,例如:

int k = 0x265;
cout << k << endl;

但是我不能輸入265 無論如何,它會像這樣工作:

輸入: 265

輸出: 613

反正有這樣做嗎?

注意:我已經嘗試過:

int k = 0x, b;
cin >> b;
cout << k + b << endl;

它不起作用。

我正在尋找一種輕松地將hex (十六進制)轉換為dec (十進制)的方法 我找到了一種簡單的方法來做到這一點,例如:

int k = 0x265;
cout << k << endl;

但是我不能輸入265 無論如何,它會像這樣工作:

輸入: 265

輸出: 613

反正有這樣做嗎?

注意:我已經嘗試過:

int k = 0x, b;
cin >> b;
cout << k + b << endl;

它不起作用。

我正在尋找一種輕松地將hex (十六進制)轉換為dec (十進制)的方法 我找到了一種簡單的方法來做到這一點,例如:

int k = 0x265;
cout << k << endl;

但是我不能輸入265 無論如何,它會像這樣工作:

輸入: 265

輸出: 613

反正有這樣做嗎?

注意:我已經嘗試過:

int k = 0x, b;
cin >> b;
cout << k + b << endl;

它不起作用。

我正在尋找一種輕松地將hex (十六進制)轉換為dec (十進制)的方法 我找到了一種簡單的方法來做到這一點,例如:

int k = 0x265;
cout << k << endl;

但是我不能輸入265 無論如何,它會像這樣工作:

輸入: 265

輸出: 613

反正有這樣做嗎?

注意:我已經嘗試過:

int k = 0x, b;
cin >> b;
cout << k + b << endl;

它不起作用。

如果你有一個十六進制字符串,你也可以使用下面的轉換成十進制

int base = 16;
std::string numberString = "0xa";
char *end; 
long long int number;

number = strtoll(numberString.c_str(), &end, base);

我認為這更清潔,它也適用於你的例外。

#include <iostream>
using namespace std;
int main ()
{
long long int x;
cin >> hex >> x;
cout << x;
}

std::stoi、stol、stoul、stoul可以轉換為不同的數字系統

long long hex2dec(std::string hex)
{
    std::string::size_type sz = 0;
    try
    {
        hex = "0x"s + hex;
        return std::stoll(hex, &sz, 16);
    }
    catch (...)
    {
        return 0;
    }
}

如果您需要返回字符串,則類似

std::string hex2decstr(std::string hex)
{
    std::string::size_type sz = 0;
    try
    {
        hex = "0x"s + hex;
        return std::to_string(std::stoull(hex, &sz, 16));
    }
    catch (...)
    {
        return "";
    }
}

用法:

std::string converted = hex2decstr("16B564");

暫無
暫無

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

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