#include "Turboc.h" char Dec2HexChar(int d) { if(d >= 16){ return '?'; } printf("%d, %d, %d\n", d , d + '0', d > 9); return d+'0'+(d>9)*7; } void main() { int input; for(;;){ printf("0~255사이의 수를 입력하시오(끝낼 때 -1) :"); scanf("%d", &input); if(input == -1){ break; } printf("입력한 수의 16진 표기 = %c%c\n", Dec2HexChar(input >>4), Dec2HexChar(input & 0xf)); } }10진수를 16진수로 변환과정이다. 함수로 만들어넣고 참고한다. 앞의 비트와 뒤의 비트를 각각 넘기므로 한자리의
16진수가 리턴된다. 그런데 d+'0'+(d>9)*7 과연 이것은 무엇일까? 생각했다.
그러다 아스키코드 표를 보고 이해를 하게 되었다. 0은 아스키코드로 48을 나타낸다. 그래서 d로 넘어온 숫자면 그냥 더하면
0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |
48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 |
이렇게 순서대로 보여지게 된다.
그렇다면 (d>9)*7은 무엇일까. 아스키코드 57 즉 9 이후에는 특수문자가 7개 이후에
A | B | C | D | E | F | G | H | I | J |
65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 |
즉 9이상 클경우에는 영어로 표현되기 때문에 9이하는 0*7이 되서 아무것도 안 되지만 9 이상일경우 7을 더해 영어를 표현하였다.