programing

형식 지정자 %02x

css3 2023. 6. 14. 22:04

형식 지정자 %02x

간단한 프로그램이 있습니다.

#include <stdio.h>
int main()
{
        long i = 16843009;
        printf ("%02x \n" ,i);
}

사용 중%02xformat specifier를 사용하여 2char 출력을 얻지만 출력은 다음과 같습니다.

1010101 

내가 예상하는 동안:01010101.

%02x적어도 두 자리를 인쇄하고, 다음으로 추가하는 것을 의미합니다.0더 적은 양이 있다면요.당신의 경우는 7자리이므로 추가 요금을 받지 않습니다.0맨 앞에

또한.%xint를 위한 것이지만, 당신은 긴 시간을 가지고 있습니다.해라%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