형식 지정자 %02x
간단한 프로그램이 있습니다.
#include <stdio.h>
int main()
{
long i = 16843009;
printf ("%02x \n" ,i);
}
사용 중%02x
format specifier를 사용하여 2char 출력을 얻지만 출력은 다음과 같습니다.
1010101
내가 예상하는 동안:01010101
.
%02x
적어도 두 자리를 인쇄하고, 다음으로 추가하는 것을 의미합니다.0
더 적은 양이 있다면요.당신의 경우는 7자리이므로 추가 요금을 받지 않습니다.0
맨 앞에
또한.%x
int를 위한 것이지만, 당신은 긴 시간을 가지고 있습니다.해라%08lx
대신.
%x
는 16진수 값을 포맷하고 출력하는 형식 지정자입니다.int 또는 long 값을 제공하는 경우 16진수 값으로 변환됩니다.
%02x
제공된 값이 두 자리 미만일 경우0
앞에 추가됩니다.
당신이 제공한 가치16843009
그리고 그것은 로 변환되었습니다.1010101
그것은 16진수 값입니다.
문자열이 형식 너비인 2보다 큽니다.그래서 할 수 있는 패딩이 없습니다.
당신은 실제로 정확한 값을 얻고 있습니다.
너의 방식x86
(호환 가능) 프로세서는 이와 같은 데이터를 리틀 엔디안 순서로 저장합니다. 즉, MSB가 마지막으로 출력됩니다.
출력을 고려하면 다음과 같습니다.
10101010
마지막 두 16진수 값10
는 가장 중요한 바이트입니다.2 hex digits = 1 byte = 8 bits
(불필요한 설명을 위해).
따라서 바이트의 메모리 저장 순서를 거꾸로 하면 실제로 값은 다음과 같습니다.01010101
.
그것이 해결되기를 바랍니다!
언급URL : https://stackoverflow.com/questions/18438946/format-specifier-02x
'programing' 카테고리의 다른 글
Oracle이 연산자와 같지 않음 (0) | 2023.06.14 |
---|---|
오라클에서 글로벌 임시 테이블을 피하는 방법 (0) | 2023.06.14 |
이름이 [DEFAULT]인 FirebaseApp이 없습니다. (0) | 2023.06.09 |
Android Firebase, 하나의 하위 개체 데이터만 가져옵니다. (0) | 2023.06.09 |
팀 프로비저닝 프로필에 장치 추가 (0) | 2023.06.09 |