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

Bagaimana untuk Menukar Rentetan C Hex kepada Integer Bertanda?

Patricia Arquette
Patricia Arquetteasal
2024-12-27 20:45:14983semak imbas

How to Convert a C   Hex String to a Signed Integer?

C Rentetan Hex kepada Penukaran Integer Ditandatangani

Andaikan anda mempunyai rentetan perenambelasan dan ingin menukarkannya kepada integer 32-bit yang ditandatangani C . Sebagai contoh, diberikan rentetan hex "fffefffe", perwakilan binari ialah 1111111111111111011111111111111110. Ini mewakili integer bertanda -65538.

Prosedur Penukaran:Untuk menjalankan ini:

penukaran dengan berkesan, gunakan std::stringstream seperti berikut:

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

Contohnya, coretan kod berikut menghasilkan -65538:

#include <sstream>
#include <iostream>

int main() {
    unsigned int x;
    std::stringstream ss;
    ss << std::hex << "fffefffe";
    ss >> x;
    // Output as a signed type
    std::cout << static_cast<int>(x) << std::endl;
}

Fungsi Penukaran Rentetan C 11:

Untuk C 11 atau lebih baru, rentetan baharu kepada utiliti nombor memudahkan proses ini. Fungsi "stol" (rentetan kepada panjang) dan "stoul" (rentetan kepada panjang tidak bertanda) menyediakan pembalut nipis di sekeliling keupayaan penukaran rentetan C.

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

Pertimbangan Tambahan:

Perhatikan bahawa Boost juga menyediakan fungsi yang berguna untuk penukaran ini, termasuk semakan ralat keupayaan.

Walau bagaimanapun, untuk kesederhanaan dan mudah alih, adalah disyorkan untuk menggunakan aliran rentetan terbina dalam atau fungsi utiliti C 11 yang dibentangkan di sini.

Atas ialah kandungan terperinci Bagaimana untuk Menukar Rentetan C Hex kepada Integer Bertanda?. 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