Rumah >pembangunan bahagian belakang >C++ >Bagaimanakah Saya Boleh Menukar Rentetan Hex kepada Integer Bertanda dalam C?

Bagaimanakah Saya Boleh Menukar Rentetan Hex kepada Integer Bertanda dalam C?

Susan Sarandon
Susan Sarandonasal
2024-12-28 13:03:12507semak imbas

How Can I Convert a Hex String to a Signed Integer in C  ?

Tukar Rentetan Hex kepada Integer Bertanda dalam C

Banyak situasi memerlukan penukaran rentetan perenambelasan kepada integer bertanda dalam C . Sebagai contoh, anda mungkin mempunyai rentetan heks seperti "fffefffe" yang mewakili nilai perduaan 11111111111111101111111111111110, yang sepadan dengan integer yang ditandatangani -65538.

Penyelesaian Menggunakan std::stringstream

Satu pendekatan untuk mencapai penukaran ini melibatkan penggunaan std::stringstream:

unsigned int x;   
std::stringstream ss;
ss << std::hex << "fffefffe";
ss >> x;

Nombor Bukan Negatif

Untuk mengendalikan nombor bukan negatif, anda boleh menggunakan yang berikut contoh:

#include <sstream>
#include <iostream>

int main() {
    unsigned int x;   
    std::stringstream ss;
    ss << std::hex << "0000000A";
    ss >> x;
    std::cout << static_cast<int>(x) << std::endl;
}

Ini akan menghasilkan 10 sebagai hasilnya, yang betul untuk rentetan hex "0000000A".

C 11 Fungsi Rentetan-ke-Nombor

Dalam C 11, anda boleh menggunakan fungsi rentetan ke nombor seperti std::stoul:

std::string s = "0xfffefffe";
unsigned int x = std::stoul(s, nullptr, 16);

Pendekatan Lain

Sebagai alternatif, anda boleh memanfaatkan perpustakaan seperti Boost, yang menawarkan fungsi seperti lexical_cast:

unsigned int x = boost::lexical_cast<int>("0x0badc0de");

Menggelek Sendiri lexical_cast

Jika anda lebih suka pendekatan yang lebih mudah tanpa kebergantungan, anda boleh menggunakan pelaksanaan tersuai bagi lexical_cast:

template<typename T2, typename T1>
inline T2 lexical_cast(const T1 &amp;in) {
    T2 out;
    std::stringstream ss;
    ss << in;
    ss >> out;
    return out;
}

unsigned int x = lexical_cast<unsigned int>("0xdeadbeef"); 

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menukar Rentetan Hex kepada Integer Bertanda dalam C?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn