2009-10-04 4 views
1

값을 가져 와서 다시 인쇄해야하는 프로그램이 있습니다. 그러나 사용자가 12와 같은 것을 입력하면 (C에서 16 진수) 프로그램이 이상한 문자를 인쇄합니다. ASCII로 표현한 것 같습니다. 그 번호를 원시 번호로 저장하는 방법이 있습니까? 나는 외부 라이브러리를 통해 입력과 출력을하고 있기 때문에 그 라이브러리와 아무 상관이 없다.어셈블리가 ASCII로 어떻게 작동하는지 이해할 수 없습니까?

답변

2

컴퓨터 내부에 여러 가지 방법으로 번호를 저장할 수 있습니다. 주요 내용은 다음과 같습니다.

  • 기본 이진수로. 숫자 123은 옥텟으로 저장됩니다 : 0x7b, 1 바이트보다 큰 정수를 사용하는 경우 제로 패딩. 0 패딩은 왼쪽 (빅 엔디안 머신) 또는 오른쪽 (리틀 엔디 언 머신) 중 하나에있을 수 있습니다.
  • 문자열입니다. 123은 ASCII/Latin1/UTF-8을 가정하고 0x31 32 33으로 저장됩니다. 문자열이 끝나는 위치를 나타 내기 위해 먼저 길이 필드 (원시 2 진수로 저장 됨) 또는 0 바이트 (0x00)가있을 수 있습니다.
  • BCD. 123은 0x01 23으로 저장됩니다. 바이트는 또한 0x23처럼 리틀 엔디안 순서로 저장 될 수 있습니다.

입력 라이브러리가 원하는 형식 출력 라이브러리가 제공하는 형식 및 프로그램에서 변환 할 수 있습니다. 이 변환의 일반 이름은 "이진수 - 십진 변환"입니다.

관련 문제