본문 바로가기
  • PunkComputing
공부방

자료형 아스키코드

by Mr.DOT 2020. 12. 20.
반응형

파이썬에서 문자와 아스키코드를 변환할때 chr() 과 ord() 함수를 사용 할 수 있다.

 

문자 -> 아스키코드 : chr()

아스키코드 -> 문자 : ord()

 

 

chr()

print chr(65)
#A

print chr(100)
#d

print chr(126)
#~

 

ord()

print ord('A')
#65

print ord('d')
#100

print ord('~')
#126

 

WORD? DWORD?

win32 api를 다루다보면 종종 WORD나 DWORD 자료형이 보입니다.

정의가 되어있는 헤더파일로 가보면 WORD는 unsigned short로, DWORD는 unsigned long으로 typedef 되어있습니다.

그냥 unsigned short를 사용하면 되는데 굳이 자료 재정의를 하여 WORD로 사용하는 이유가 있을까요?

 

 

 

자료형 WORD의 유래

WORD 자료형을 설명하기 전에 먼저, 운영체제가 개발되던 시절에 관한 내용을 짤막하게 해드리도록 하겠습니다.

 

운영체제는 탑재되는 컴퓨터의 성능을 최대한 활용하는 방향으로 개발되어 왔습니다. 그렇기에 하드웨어를 제어하는 부분의 코드는 하드웨어에 종속적일 수 밖에 없었죠. 예를 들면 CPU에 데이터를 보낼 때, 데이터가 전송되는 통로의 속도도 신경써야 했고, 통로의 크기도 고려해주어야 했습니다.

 

운영체제를 개발하면서 특히 데이터 전송 통로의 크기는 매우 중요한 사항이었습니다. 데이터를 다룰 때, 이 통로의 크기보다 큰 데이터는 나누어서 전송해야 하기 때문입니다. 그래서 이 통로의 크기에 대한 단위의 이름을 정하게 됩니다.

 

개발자들은 데이터 전송 통로(BUS)에 한번에 지나갈 수 있는 데이터의 크기의 단위를 WORD( 단어 )라고 정했습니다. 전문용어로는 데이터 전송 단위(Data Transfer Unit)이라고도 합니다.

 

 

 

커지는 데이터 전송 단위

이 글을 쓰는 시점에서 여러분이 쓰는 운영체제는 대부분 윈도우10 일 것입니다. 

 

혹시 윈도우에도 32bit 버전이 있고 64bit 버전이 있다는 얘기 들어보셨나요? 위에서 설명했듯이 여러분들이 쓰는 컴퓨터에는 데이터 전송 단위가 정해져 있는데, 만약 데이터 전송 단위가 32bit까지인 컴퓨터를 사용하신다면 운영체제는 윈도우 32bit를 선택하셔야 합니다. 마찬가지로 데이터 전송 단위가 64bit라면 운영체제는 64bit를 선택해야 합니다.(다만 64bit 컴퓨터는 32bit 운영체제가 돌아갑니다.)

 

요즘 나오는 하드웨어(CPU, RAM ...)는 거의 대부분 64bit 이상의 데이터 전송폭을 가지고 있기 때문에 윈도우는 앞으로 64bit 이상의 운영체제만 출시할 것입니다.

 

날이 갈수록 데이터 전송 단위는 커져가고 있지만 win32 api의 자료형 WORD는 16bit입니다. 그 이유는 호환성 때문입니다.

 

윈도우 7에서  win 32 api로 만든 프로그램이 있다고 가정해봅시다. 마이크로소프트에서 윈도우 10을 개발하면서 win 32 api를 윈도우 10에 최적화하여 새로 만들어 쓴다면  윈도우 7에서 개발한 프로그램은 작동하지 않을 것입니다.

 

윈도우 7에서 만든 프로그램이 윈도우 10에서는 작동되지 않는다면 다음과 같은 문제가 발생하게 됩니다.

 

1. 윈도우 7의 유저들이 윈도우 10으로 갈아타지 않는다(운영체제가 팔리지 않는다.)

2. 개발자들은 유지보수가 힘들어져서 해당 운영체제의 api로 개발을 하지 않는다.

반응형

'공부방' 카테고리의 다른 글

C/C++ 출력_타입  (0) 2020.12.20
FFFFFFFF16  (0) 2020.12.20
random pwnable  (0) 2020.12.20
tar 사용법  (0) 2020.12.17
2021년 리눅스에서 가상머신환경 만들기 VMware 문제해결  (0) 2020.12.17

댓글