Swift/학습

[Swift] 문자열의 인코딩

언클린 2020. 2. 23. 22:50
728x90

이번에는 Base64를 사용해서 문자열 인코딩을 알아보겠습니다.

아래는 Base64에 대한 설명입니다.

 

컴퓨터 분야에서 쓰이는 Base 64 란 8비트 이진 데이터(예를 들어 실행 파일이나, ZIP 파일 등)를 문자 코드에 영향을 받지 않는 공통 ASCII 영역의 문자들로만 이루어진 일련의 문자열로 바꾸는 인코딩 방식을 가리키는 개념이다.

원래 Base 64를 글자 그대로 번역하여 보면 64진법이란 뜻이다. 특별히 64진법이 컴퓨터에서 흥미로운 것은, 64가 2의 제곱수(64 = 26)이며, 2의 제곱수들에 기반한 진법들 중에서 화면에 표시되는 ASCII 문자들을 써서 표현할 수 있는 가장 큰 진법이기 때문이다. 즉, 다음 제곱수인 128진법에는 128개의 기호가 필요한데 화면에 표시되는 ASCII 문자들은 128개가 되지 않는다.

그런 까닭에 이 인코딩은 전자 메일을 통한 이진 데이터 전송 등에 많이 쓰이고 있다. Base 64에는 어떤 문자와 기호를 쓰느냐에 따라 여러 변종이 있지만, 잘 알려진 것은 모두 처음 62개는 알파벳 A-Z, a-z와 0-9를 사용하고 있으며 마지막 두 개를 어떤 기호를 쓰느냐의 차이만 있다.

 

https://ko.wikipedia.org/wiki/%EB%B2%A0%EC%9D%B4%EC%8A%A464


1.Encoding

간단한 예제를 통하여 알아보겠습니다.

우선 문자열을 데이터화 한 후 Swift에서 제공하는 base64 EncodedString()를 사용하여 인코딩합니다.

let stringData = "unclean"

let data = stringData.data (using: .utf8)

if let encode = data?.base64EncodedString() {
    print(encode)
}


result: dW5jbGVhbg==

2. Decoding

다음으로 디코드도 알아보겠습니다.

위의 인코딩 처리로 구해진 문자열을 디코딩해보겠습니다.

let encodeString = "dW5jbGVhbg=="

let data = Data(base64Encoded: encodeString)

if let decode = String(data: data!, encoding: .utf8) {
    print(decode)
}


result: unclean

 

이상으로 Base64를 사용한 문자열의 Encode/Decode에 대해서 알아보았습니다.

지적사항이나 질문이 있으시면 댓글에 작성해주시면 감사하겠습니다.

부족하지만 도움이 되었으면 좋겠습니다.


환경 

Xcode 11.3

Swift 5

728x90