C에서 16진수 문자열을 부호 있는 정수로 변환
C에서 16진수 문자열을 부호 있는 정수로 변환해야 하는 경우가 많습니다. 예를 들어, 부호 있는 정수 -65538에 해당하는 11111111111111101111111111111110의 이진 값을 나타내는 "fffefffe"와 같은 16진수 문자열이 있을 수 있습니다.
std::stringstream을 사용한 솔루션
한 가지 접근 방식 이 변환을 수행하려면 std::stringstream:
unsigned int x; std::stringstream ss; ss << std::hex << "fffefffe"; ss >> x;
음수가 아닌 숫자
음수가 아닌 숫자를 처리하려면 다음 예를 사용할 수 있습니다.
#include <sstream> #include <iostream> int main() { unsigned int x; std::stringstream ss; ss << std::hex << "0000000A"; ss >> x; std::cout << static_cast<int>(x) << std::endl; }
결과적으로 10이 생성되며 이는 16진수 문자열에 적합합니다. "0000000A".
C 11 문자열-숫자 함수
C 11에서는 std::stoul과 같은 문자열-숫자 함수를 활용할 수 있습니다.
std::string s = "0xfffefffe"; unsigned int x = std::stoul(s, nullptr, 16);
기타 접근 방식
또는 lexical_cast와 같은 기능을 제공하는 Boost와 같은 라이브러리를 활용할 수 있습니다.
unsigned int x = boost::lexical_cast<int>("0x0badc0de");
나만의 lexical_cast 롤링
종속성 없이 더 간단한 접근 방식을 선호하는 경우 다음의 사용자 정의 구현을 사용할 수 있습니다. 어휘_캐스트:
template<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");
위 내용은 C에서 16진수 문자열을 부호 있는 정수로 어떻게 변환할 수 있나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!