>백엔드 개발 >C++ >C에서 문자열을 16진수로 변환하고 다시 되돌리는 방법은 무엇입니까?

C에서 문자열을 16진수로 변환하고 다시 되돌리는 방법은 무엇입니까?

Mary-Kate Olsen
Mary-Kate Olsen원래의
2024-12-19 11:25:09232검색

How to Convert Strings to Hexadecimal and Back in C  ?

C에서 문자열을 16진수로 변환하고 다시 C로 변환

문자열과 16진수를 조작하는 것은 프로그래밍에서 일반적인 작업입니다. C에서 표준 라이브러리는 이러한 작업을 위한 함수 세트를 제공합니다.

문자열을 16진수로(string_to_hex)

문자열을 16진수로 변환하는 작업은 string_to_hex 함수를 사용하여 수행됩니다. . 이 함수는 입력 문자열의 각 문자를 반복하고 해당 문자의 16진수 값을 추출하여 출력 문자열에 추가합니다. 예를 들어, "Hello World" 문자열은 "48656C6C6F20576F726C64"로 변환됩니다.

std::string string_to_hex(const std::string& input)
{
    static const char hex_digits[] = "0123456789ABCDEF";

    std::string output;
    output.reserve(input.length() * 2);
    for (unsigned char c : input)
    {
        output.push_back(hex_digits[c >> 4]);
        output.push_back(hex_digits[c & 15]);
    }
    return output;
}

16진수를 문자열로(hex_to_string)

16진수 문자열을 다시 변환하려면 일반 문자열로 변환하려면 hex_to_string을 사용하세요. 기능. 여기서 각 16진수 쌍은 정수로 변환되고 결과 정수는 연결되어 출력 문자열을 형성합니다.

std::string hex_to_string(const std::string& input)
{
    const auto len = input.length();
    if (len & 1) throw std::invalid_argument("odd length");

    std::string output;
    output.reserve(len / 2);
    for (auto it = input.begin(); it != input.end(); )
    {
        int hi = hex_value(*it++);
        int lo = hex_value(*it++);
        output.push_back(hi << 4 | lo);
    }
    return output;
}

이를 통해 C에서 문자열과 16진수 데이터를 쉽게 변환할 수 있습니다. 다양한 프로그래밍 시나리오에 편리합니다.

위 내용은 C에서 문자열을 16진수로 변환하고 다시 되돌리는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.