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
Lepaskan: 2024-12-21 06:36:14
asal
463 orang telah melayarinya

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;
Salin selepas log masuk

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
}
Salin selepas log masuk
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");
Salin selepas log masuk

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 Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan