>백엔드 개발 >C++ >C에서 16진수 문자열을 바이트 배열로 효율적으로 변환하는 방법은 무엇입니까?

C에서 16진수 문자열을 바이트 배열로 효율적으로 변환하는 방법은 무엇입니까?

Patricia Arquette
Patricia Arquette원래의
2024-12-18 19:26:12485검색

How to Efficiently Convert a Hex String to a Byte Array in C  ?

16진수 문자열을 바이트 배열로 변환

가변 길이의 16진수 문자열을 바이트 배열로 변환하는 것은 프로그래밍에서 일반적인 작업이므로 표현이 가능합니다. 사람이 읽을 수 있는 형식의 이진 데이터입니다. 이를 효율적으로 수행하는 방법은 다음과 같습니다.

"01A1"과 같은 16진수 문자열을 바이트 배열로 변환하려면 내장된 strtol() 함수를 활용하여 변환을 수행할 수 있습니다. 다음 구현에서는 바이트 배열을 저장할 문자의 std::벡터를 만듭니다.

std::vector<char> HexToBytes(const std::string& hex) {
  std::vector<char> bytes;

  // Loop through the hex string in pairs of characters
  for (unsigned int i = 0; i < hex.length(); i += 2) {
    // Extract the current pair of characters
    std::string byteString = hex.substr(i, 2);

    // Convert the pair to a char using strtol()
    char byte = (char)strtol(byteString.c_str(), NULL, 16);

    // Append the char to the byte array
    bytes.push_back(byte);
  }

  // Return the byte array
  return bytes;
}

이 접근 방식은 모든 짝수 길이의 16진수 문자열에 작동합니다. strtol() 함수는 문자 배열 byteString.c_str() 및 밑수(16진수의 경우 16)에 대한 포인터를 사용합니다.

이 HexToBytes() 함수를 사용하면 16진수 문자열을 바이트로 쉽게 변환할 수 있습니다. 배열을 사용하면 편리하고 유연한 방식으로 바이너리 데이터로 작업할 수 있습니다.

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

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