2 minute read

Mention : 6bit 를 8bit로 바꿔주는 비효율적인 작업을 왜 하는걸까?🧐

Encoding?

  • 인코딩 (encoding)은 정보의 형태나 형식을 표준화, 보안, 처리 속도 향상, 저장 공간 절약 등을 위해서 다른 형태나 형식으로 변환하는 처리 혹은 그 처리 방식을 말한다

Base64 인코딩 원리

  • 원본을 6bit씩 끊어서 처리
  • 아스키 코드 표

https://blog.kakaocdn.net/dn/qOPNt/btrAdcY26CF/Ksn1qKzUqEaCql1Cbk6GG0/img.png

  • ex) KSH 를 위의 표를 참고하여 아스키코드로 변환해보자
    • K = 0x4B
    • S = 0x53
    • H = 0x68
  • 해당 아스키 코드(16진수)를 이진수(Binary)로 변환해보자 (feat.ChatGPT)
    • To convert an ASCII code to binary, you can follow the same steps as before. Here’s how to convert the ASCII code for the string “KSH” to binary:
      1. Look up the ASCII table to find the decimal value of each ASCII character in the string. The ASCII code for “K” is 75, the ASCII code for “S” is 83, and the ASCII code for “H” is 72.
      2. Convert each decimal value to binary using the steps outlined above. The binary representation of 75 is 01001011, the binary representation of 83 is 01010011, and the binary representation of 72 is 01001000.
      3. Concatenate the binary representations of each character to form the binary representation of the string. The binary representation of “KSH” is 010010110101001101001000.

    Again, you can also use a computer or calculator to do the conversion for you, or use a built-in function in a programming language.

    • 16진수에서 A = 10, B = 11 …… F = 15 이다.
    • 8421 8421 (2^3, 2^2, 2^1, 2^0)
    • K = 0100 1011
    • S = 0101 0011
    • H = 0110 1000
  • Base64 Binary Codes

https://blog.kakaocdn.net/dn/WQCY9/btqXRvA9yPW/W4m4K7twVsMD3WQtb4JMT1/img.png

  • KSH를 바이너리로 변환하면 010010110101001101001000 이다.
    • 이를 6bit씩 끊는다.
    • 010010 110101 001101 001000
    • 위의 Base64 Binary Codes 를 참조해 인코딩을 한다.
    • 010010 = S
    • 110101 = 1
    • 001101 = N
    • 001000 = I
    • S1NI (KSH를 Base64로 인코딩한 값)

Why?

  • 6bit → ASCII (8bit)
    • 데이터 증가 ? 효율성이 안좋은데 왜 하나?
  • Binary → 데이터 → [영문자] 변환
  • 2022 WEB 의 시대
    • HTML, JSON(문서) ← ASCII
    • 이미지 등 바이너리로 표현되어 있는것을 텍스트변환하여 문서속에 포함시키려고 한다.
  • HTML + IMG 가 효율적 (연결을 한번만해도됨)
  • 6bit로 끊을 때, 뒷자리가 안 떨어지는 경우 padding(=)

Summary.

  • Base64 인코딩이란 바이너리 데이터를 ASCII문자로 이루어진 텍스트로 바꾸는 인코딩입니다. ASCII을 바이너리 데이터로 변환하여 바이너리 데이터를 6bit씩 끊어주면 Base64 인코딩표를 통해 인코딩 할 수 있습니다. 이를 Base64 인코딩이라고 합니다.
  • WEB에서는 HTML, JSON 등의 문서에 ASCII을 사용합니다. 이미지 등 바이너리로 표현되어 있는것을 텍스트로 변환하여 문서 속에 포함시켜 주면, 데이터 전송 및 저장 시 효율성을 높아지기 때문에 사용합니다.
  • 다른 이유로는, ASCII는 7 bits Encoding인데 나머지 1bit를 처리하는 방식이 시스템 별로 상이합니다. 또한 일부 제어문자의 경우 시스템 별로 다른 코드값을 갖습니다. 이러한 문제로 시스템간 전달 시 문제가 생길 수도 있어 Base64는 ASCII 중 제어문자와 일부 특수문자를 제외한 64개의 안전한 출력 문자만 사용합니다.

Reference 📚

https://www.youtube.com/watch?v=A8tO4D1Gtc0

Tags: , ,

Categories:

Updated:

Leave a comment