C의 printf로 hex값을 int로 출력
C에서 헥사값(hex)를 정수(int)로 print하는건 매우 간단하다. 일반적으로 printf에서 정수를 출력하기 위해 사용하는 출력문자를 %d 대신 %x로 사용하면 된다.
#include <stdio.h> int main() { unsigned char input = 0x78; printf("printf input d: %d\n", input); // printf input d: 120 printf("printf input d: %x\n", input); // printf input d: 78 return 0; }
C++의 cout에서도 출력될까?
C++의 iostream에는 출력함수로 cout을 제공한다. 그런데 cout에서 0x78을 그대로 출력하면 정상적으로 출력되지 않는다.
// Online C compiler to run C program online #include <stdio.h> #include <iostream> int main() { unsigned char input = 0x78; std::cout<<"cout input: "<<input<<std::endl; // cout input: x return 0; }
Hex to Int
hex값을 그대로 cout으로 출력하면 정상적이지 않지만 static_cast로 타입캐스팅을 하면 정상적으로 출력할 수 있다.
출력 뿐 아니라 hex를 int로 변환하여 변수로 저장하고 싶을때도 사용할 수 있다.
// Online C compiler to run C program online #include <stdio.h> #include <iostream> int main() { unsigned char input = 0x78; int inputDecimal = static_cast<int>(input); std::cout<<"cout inputDecimal: "<<inputDecimal<<std::endl; // cout inputDecimal: 120 return 0; }