> 백엔드 개발 > C++ > C 16진수 문자열을 부호 있는 정수로 변환하는 방법은 무엇입니까?

C 16진수 문자열을 부호 있는 정수로 변환하는 방법은 무엇입니까?

Patricia Arquette
풀어 주다: 2024-12-27 20:45:14
원래의
982명이 탐색했습니다.

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

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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿