>백엔드 개발 >C++ >C에서 Base64 데이터를 인코딩하고 디코딩하는 방법은 무엇입니까?

C에서 Base64 데이터를 인코딩하고 디코딩하는 방법은 무엇입니까?

Barbara Streisand
Barbara Streisand원래의
2024-12-10 03:44:09467검색

How to Encode and Decode Base64 Data in C  ?

C의 Base64 디코드 스니펫

Base64는 바이너리 데이터를 인쇄 가능한 ASCII 문자 문자열로 변환하는 데 널리 사용되는 인코딩 체계입니다. 이는 이메일이나 웹 페이지와 같이 전송용으로 설계되지 않은 채널을 통해 바이너리 데이터를 전송할 때 종종 필요합니다.

구현 세부 정보

제공된 코드 스니펫은 다음을 구현합니다. C에서 Base64의 인코딩 및 디코딩 기능을 모두 제공합니다. 인코딩 함수는 이진 데이터 버퍼와 해당 길이를 사용하고 인코딩된 데이터가 포함된 문자열을 반환합니다. 반면에 디코딩 함수는 Base64로 인코딩된 문자열을 가져와 디코딩된 바이너리 데이터가 포함된 벡터를 반환합니다.

바이너리 데이터를 인코딩하기 위해 스니펫은 일련의 단계를 사용합니다.

  1. 이진 데이터의 연속 3바이트를 저장하기 위해 3바이트 배열을 초기화합니다.
  2. 이진 데이터 버퍼를 반복하여 읽습니다. 한 번에 3바이트입니다.
  3. 각 3바이트 집합을 4개의 6비트 값으로 변환하여 4바이트 배열에 저장합니다.
  4. 각 6비트를 매핑합니다. 값을 Base64 알파벳 문자로 변환합니다.
  5. 인코딩된 데이터에 매핑된 문자를 추가합니다. string.

Base64로 인코딩된 데이터를 디코딩하는 과정은 비슷한 프로세스를 따릅니다.

  1. 디코딩된 데이터를 저장하기 위해 4바이트 배열을 초기화합니다.
  2. 인코딩된 데이터 문자열을 반복하면서 한 번에 4개의 문자를 읽습니다.
  3. 4개의 문자로 구성된 각 세트에 대해 해당 문자를 찾습니다. Base64 알파벳의 해당 값을 4개의 6비트 값으로 변환합니다.
  4. 6비트 값을 3개의 8비트 바이트로 분할하여 디코딩된 데이터 배열에 저장합니다.
  5. 디코딩된 바이너리를 포함하는 벡터에 디코딩된 바이트를 추가합니다. data.

사용

제공된 코드 조각을 사용하려면 C 프로그램에 "base64.h" 헤더 파일을 포함하고 다음 기능을 사용하세요.

  • base64_encode: 바이너리 데이터 버퍼를 Base64로 인코딩된 문자열.
  • base64_decode: Base64로 인코딩된 문자열을 이진 데이터 벡터로 디코딩합니다.

다음은 제공된을 사용하여 Base64 데이터를 인코딩 및 디코딩하는 방법의 예 조각:

#include "base64.h"

int main() {
  // Binary data to encode
  std::vector<BYTE> data = {0x12, 0x34, 0x56, 0x78};

  // Encode the data using Base64
  std::string encodedData = base64_encode(&data[0], data.size());

  // Print the encoded data
  std::cout << "Encoded Data: " << encodedData << std::endl;

  // Decode the Base64-encoded data
  std::vector<BYTE> decodedData = base64_decode(encodedData);

  // Print the decoded data
  std::cout << "Decoded Data:";
  for (BYTE byte : decodedData) {
    std::cout << " " << std::hex << (int)byte;
  }
  std::cout << std::endl;

  return 0;
}

이 예는 다음을 출력합니다.

Encoded Data: tEs=
Decoded Data: 12 34 56 78

위 내용은 C에서 Base64 데이터를 인코딩하고 디코딩하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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