C 16진수 문자열을 부호 있는 정수로 변환
16진수 문자열이 있고 이를 부호 있는 32비트 정수로 변환하려고 한다고 가정합니다. 씨. 예를 들어, 16진수 문자열 "fffefffe"의 경우 이진 표현은 11111111111111101111111111111110입니다. 이는 -65538의 부호 있는 정수를 나타냅니다.
변환 절차:
이를 수행하려면 효과적으로 전환하다, 활용하다 std::stringstream은 다음과 같습니다.
unsigned int x; std::stringstream ss; ss << std::hex << "fffefffe"; ss >> x;
예를 들어 다음 코드 조각은 -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; }
C 11 문자열 변환 함수:
C 11 이상의 경우 새로운 문자열을 숫자로 변환하는 유틸리티는 이 프로세스를 단순화합니다. "stol"(문자열을 long으로) 및 "stoul"(문자열을 unsigned long으로) 함수는 C의 문자열 변환 기능에 대한 얇은 래퍼를 제공합니다.
std::string s = "0xfffefffe"; unsigned int x = std::stoul(s, nullptr, 16);
추가 고려 사항:
Boost는 오류 검사 기능을 포함하여 이 변환에 유용한 기능도 제공합니다.
그러나 단순화를 위해 및 이식성을 고려하면 여기에 제시된 내장 stringstream 또는 C 11 유틸리티 기능을 사용하는 것이 좋습니다.
위 내용은 C 16진수 문자열을 부호 있는 정수로 변환하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!