Rumah >pembangunan bahagian belakang >C++ >Bagaimana untuk Menukar Rentetan Hex kepada Integer Bertanda dalam C?

Bagaimana untuk Menukar Rentetan Hex kepada Integer Bertanda dalam C?

Barbara Streisand
Barbara Streisandasal
2024-12-21 06:36:14448semak imbas

How to Convert Hex Strings to Signed Integers in C  ?

Menukar Rentetan Hex kepada Integer Bertandatangan dalam C

Pertimbangkan tugas menukar perwakilan rentetan heks nombor kepada integer bertanda 32-bit. Sebagai contoh, rentetan hex "fffefffe" diterjemahkan kepada 11111111111111101111111111111110 dalam perduaan, mewakili integer yang ditandatangani -65538. Selain itu, kita perlu mengendalikan kedua-dua nombor positif dan negatif, seperti "0000000A" (perduaan: 0000000000000000000000000001010; perpuluhan: 10).

Penyelesaian: Menggunakan std::stringstrim>

Dengan mengekstrak integer daripada strim, kami memperoleh perwakilan integer bertanda 32-bit bagi rentetan hex.
unsigned int x;
std::stringstream ss;
ss << std::hex << "fffefffe";
ss >> x;

Pendekatan Alternatif

Leksikal_cast Boost: Mengendalikan Ralat (Dihentikan)

Nota: Seperti yang ditunjukkan dalam jawapan sumber, pendekatan lexical_cast Boost telah dihentikan memihak kepada fungsi C 11 yang lebih baharu.

Boost juga menyediakan penyelesaian mudah yang menggabungkan semakan ralat:

try {
    unsigned int x = lexical_cast<int>("0x0badc0de");
} catch(bad_lexical_cast &amp;) {
    // Handle conversion error
}
Tersuai lexical_cast: Pelaksanaan Mudah Tanpa Semakan Ralat

Bagi mereka yang tidak menggunakan Boost, versi ringkas lexical_cast boleh digunakan tanpa pengendalian ralat:

Kesimpulan
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");

Menggunakan sama ada std::stringstream atau utiliti C 11 yang lebih baharu (seperti std::stol), pembangun boleh menukar rentetan hex dengan cekap kepada integer bertanda dalam C .

Atas ialah kandungan terperinci Bagaimana untuk 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