programing

C: "부호가 없는 긴"을 16진수로 인쇄하는 올바른 방법

subpage 2023. 10. 1. 19:28
반응형

C: "부호가 없는 긴"을 16진수로 인쇄하는 올바른 방법

저는 부호 없는 long variable을 파라미터로 얻는 함수가 있는데 Hex로 출력하고 싶습니다.

올바른 방법은 무엇입니까?

현재 printf"%lx"와 함께 사용하고 있습니다.

void printAddress(unsigned long address) {
    printf("%lx\n", address);
}

서명되지 않은 긴 육각형에 대한 인쇄물 패턴을 찾아야 합니까? (위에서 언급한 "긴 육각형"이 아니라)

아니면 printf가 비트만 사용해서 숫자를 16진수로 변환합니까? - 그래서 어차피 부호는 신경 쓰지 말아야 하나요?

편집/명확화

이 질문은 혼동에 뿌리를 두고 있습니다: hex는 단지 비트를 표현하는 또 다른 방법이며, 이것은 부호가 있거나 부호가 없는 숫자는 단지 해석일 뿐이라는 것을 의미합니다.따라서 유형이 부호 없이 길다는 사실은 16진수를 변경하지 않습니다.서명되지 않은 것은 컴퓨터 프로그램에서 동일한 비트를 해석하는 방법을 알려줄 뿐입니다.

제대로 하고 있어요.

설명서 페이지에서:

o, u,x,X

서명되지 않은 int 인수는 서명되지 않은 8진수(o), 서명되지 않은 10진수(u) 또는 서명되지 않은 16진수(x 및 X) 표기로 변환됩니다.

그래서 그 가치는.x항상 그래야만 합니다unsigned. 그것을 만들기long크기, 용도:

l

(ell) 다음 정수 변환은 long int 또는 unsigned long int 인수 [...]에 해당합니다.

그렇게%lxunsigned long. 그러나 주소(포인트 값)는 다음과 같이 인쇄해야 합니다.%p에 캐스팅 됩니다.void *.

나는 다음과 같은 포맷 지정자가 그것을 시도해봐야 한다고 생각합니다.

printf("%#lx\n",address);

언급URL : https://stackoverflow.com/questions/29509452/c-correct-way-to-print-unsigned-long-in-hex

반응형