itsource

64비트 정수를 16진수로 인쇄하는 방법

mycopycode 2022. 9. 3. 14:16
반응형

64비트 정수를 16진수로 인쇄하는 방법

다음 코드로 나는 a의 값을 출력하려고 한다.unit64_t변수 사용printf(). gcc를 사용하여 코드를 컴파일하면 다음 경고가 반환됩니다.

경고: 형식 '%x'은(는) '연결된 int' 형식의 인수를 예상하지만, 인수 2의 형식은 'uint64_t' [-Wformat=]입니다.

코드:

#include <stdio.h>
#include <stdint.h>

int main ()
{
    uint64_t val = 0x1234567890abcdef;
    printf("val = 0x%x\n", val);

    return 0;
}

출력:

val = 0x90abcdef

예상 출력:

val = 0x1234567890abcdef

64비트 값을 16진수 정수로 출력하려면printf()? 그x이 경우 지정자가 잘못된 것 같습니다.

컴파일러의 경고는 형식 지정자가 전달되는 데이터 유형과 일치하지 않음을 나타냅니다.

사용해보십시오.%lx또는%llx휴대성을 향상시키려면 , 다음을 포함합니다.inttypes.h를 사용합니다.PRIx64매크로를 사용합니다.

예를 들어 다음과 같습니다.printf("val = 0x%" PRIx64 "\n", val);(문자열 연결이라는 점에 유의하십시오)

편집: 대신 사용합니다.

해라printf("val = 0x%llx\n", val);. printf manpage 를 참조해 주세요.

ll(ell-ell)다음 정수 변환은 long long int 또는 unsigned long long int 인수에 대응하거나 다음 n 변환은 long long int 인수에 대한 포인터에 대응합니다.

편집: 더 좋은 것은 @M_Oehm입니다.여기에는 특정 매크로가 있습니다.unit64_t항상 그런 것은 아니다unsigned long long:PRIx64stackoverflow 응답도 참조해 주세요.

언급URL : https://stackoverflow.com/questions/32112497/how-to-printf-a-64-bit-integer-as-hex

반응형