Lua 스크립트로 아스키 코드 출력하는 방법

개발/lua script1 2025. 10. 22. 16:13

프로그래밍을 하다 보면 "이 문자의 아스키 값이 뭐지?" 혹은 "숫자를 문자로 바꿀 수 있을까?"
이런 궁금증, 한 번쯤 생기죠?

오늘은 Lua 스크립트로 아스키(ASCII) 코드를 출력하고 변환하는 방법을 간단하게 정리해볼게요.


아스키(ASCII) 코드란?

아스키(ASCII, American Standard Code for Information Interchange)는 문자 하나하나를 숫자로 표현한 문자 인코딩 표준이에요.

예를 들어,

문자 아스키 코드
A 65
B 66
a 97
0 48
Space(공백) 32

이런 식으로 모든 문자는 숫자 하나로 매핑되어 있습니다.

즉, 컴퓨터는 실제로 문자를 숫자로 기억하고 있는 셈이죠.


Lua에서 아스키 코드 다루기

Lua에서는 문자 ↔ 숫자 변환을 아주 간단하게 할 수 있습니다.

바로 string.byte()와 string.char() 두 가지 함수를 이용하면 돼요.

함수 설명
string.byte(s) 문자열 → 아스키 코드 숫자로 변환
string.char(n) 아스키 코드 숫자 → 문자로 변환

 

예제 1: 문자 → 아스키 코드 변환

local c = "A"
local code = string.byte(c)
print(code)

 

실행 결과:

65

즉, "A" 문자의 아스키 값은 65입니다.


예제 2: 아스키 코드 → 문자 변환

이번엔 반대로 숫자를 문자로 바꿔볼게요.

local n = 97
local char = string.char(n)
print(char)

 

실행 결과:

a

숫자 97이 문자 "a"로 출력됩니다.


예제 3: 문자열 전체의 아스키 코드 출력하기

문자 하나가 아니라 문자열 전체의 아스키 코드를 보고 싶을 때는 for 문으로 각 문자를 순회하면서 string.byte()를 사용하면 됩니다.

local str = "Lua"
for i = 1, #str do
    print(str:sub(i, i), string.byte(str, i))
end

 

실행 결과:

L 76
u 117
a 97

이렇게 한 글자씩 문자와 아스키 값을 나란히 출력할 수 있어요.


응용: 전체 아스키 코드표 출력하기

만약 0부터 127까지 전체 아스키 문자를 보고 싶다면 이렇게도 가능합니다.

for i = 32, 126 do
    print(i, string.char(i))
end

 

실행 결과 예시:

32  
33 !
34 "
35 #
36 $
...
65 A
66 B
...
97 a
98 b

이렇게 하면 눈으로 바로 문자와 숫자를 비교할 수 있어서 아주 유용합니다.


참고: 확장 아스키(128~255)

아스키 표준은 0127까지만 정의되어 있고, 그 이후 128255 구간은 확장 아스키(Extended ASCII) 라고 해서
언어권이나 인코딩 방식(예: ISO-8859-1, Windows-1252 등)에 따라 다르게 표시될 수 있습니다.

Lua에서 string.char()를 이용해 128 이상 값을 출력하면, 환경에 따라 다르게 보일 수 있으니 주의하세요.


정리하자면

구분 설명
기본 아스키 범위 0 ~ 127
확장 아스키 범위 128 ~ 255
문자 → 코드 string.byte("A") → 65
코드 → 문자 string.char(65) → "A"
문자열 전체 출력 for i = 1, #str do ... end
주의할 점 인코딩 환경에 따라 다를 수 있음

 

한줄요약
Lua 스크립트에서는 string.byte()로 문자의 아스키 값을, 
string.char()로 숫자를 문자로 쉽게 변환할 수 있습니다. 

간단하지만 알아두면 디버깅이나 문자열 처리할 때 정말 유용해요!

 

 

반응형
admin