Rumah >pembangunan bahagian belakang >C++ >Bagaimana untuk Menukar Rentetan Hex kepada Integer Bertanda 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).
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 &) { // 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:
Kesimpulantemplate<typename T2, typename T1> inline T2 lexical_cast(const T1 &in) { T2 out; std::stringstream ss; ss << in; ss >> out; return out; } unsigned int x = lexical_cast<unsigned int>("0xdeadbeef");
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!