[Go 언어] 7. byte와 rune 으로 바이너리 데이터 및 코드 표현

안녕하세요. 언제나 휴일, 언휴예요.

Go 언어에서는 바이너리 데이터를 읽거나 쓸 때 바이트 단위로 처리할 때 byte 형식을 주로 사용해요. 그리고 유니코드(UTF-8)를 표현할 때 rune을 사용합니다.

먼저 byte 표현하는 방법을 새로운 프로젝트를 만들어 확인합시다.

[그림 1] LiteIDE에서 새로운 프로젝트 생성 및 소스 파일 추가
// Example byte 표현
package main
 
import "fmt"
 
func main() {
    var b1 byte = 49
    var b2 byte = 061
    var b3 byte = 0x31
    var b4 byte = '1'
    fmt.Println(b1)
    fmt.Println(b2)
    fmt.Println(b3)
    fmt.Println(b4)
}

byte 형식 변수에는 0부터 255까지의 정수 표현을 사용할 수 있어요. 그리고 ‘a’ 처럼 하나의 아스키코드 문자를 표현할 수 있습니다. 다음은 숫자 문자 ‘1’의 아스키 코드를 네 가지 방법으로 표현한 것입니다.

var b1 byte = 49
var b2 byte = 061
var b3 byte = 0x31
var b4 byte = '1'
[그림 2] byte 형식 변수에 숫자 문자 ‘1’을 표현한 예제 실행 화면

그런데 아스키코드는 미국 알파벳은 표현할 수 있지만 한글은 표현할 수 없어요. 한글이나 한자 등을 표현할 때는 유니코드를 사용하여 표현할 수 있어요. Go 언어에서는 유니코드(UTF-8)를 표현할 때 사용하는 형식 rune을 제공하고 있어요.

마찬가지로 새로운 프로젝트를 생성하여 직접 표현해 보아요.

[그림 3] LiteIDE에서 새로운 프로젝트 생성 및 소스 파일 추가
// Example rune 형식에 유니코드 표현
package main
 
import "fmt"
 
func main() {
    var r1 rune = '한'
    var r2 rune = '\ud55c'
    fmt.Println(r1)
    fmt.Println(r2)
}

유니코드를 표현할 때는 작은 따옴표 사이에 하나의 문자를 표현하거나 ‘\u’ 혹은 ‘\U’를 사용하여 유니코드 문자값을 나타내어 표현합니다.

var r1 rune = '한'
var r2 rune = '\ud55c'

위키피디아 유니코드

[그림 4] rune 형식 변수에 한글 ‘한’을 표현한 예제 실행 화면