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()로 숫자를 문자로 쉽게 변환할 수 있습니다.
간단하지만 알아두면 디버깅이나 문자열 처리할 때 정말 유용해요!




