2010-06-27 8 views
2

십진 정수를 16 진수로 변환하려고합니다. 나는 온라인으로 많은 검색을 해왔고 이것을하기위한 많은 방법을 발견했다. 그러나 내가 발견 한 모든 방법은 문자열로 변환됩니다. 예를 들어 100을 "64"로 변환 할 수 있습니다. 그건 내가해야 할 것이 아니야. 저는 100을 '0x64'로 변환 할 수 있기를 원합니다. 이것은 완전히 다른 문제입니다. 웬일인지, 나는 대답이 극단적으로 단순하다라고 생각한다. 그러나 나는 그것을 발견하거나 기억할 수 없다. 내가 명확히하기 위해 C 프로그래밍 언어로 쓰고 있습니다. 어떤 도움이나 아이디어라도 높이 평가할 수 있습니다.어떻게 10 진수 정수를 하나의 16 진수 문자로 변환합니까? (C)

감사합니다, C 언어에서 하산

+0

내가 그것을 인정 슬프다,하지만 난 당신이 그 수에 상응의 진수 문자열을 분석하여 설명하고 무엇을 할 방법의 시리즈를 썼다 : 당신은 인쇄 다른 기지에서을하지만 수 있습니다. 이전의 애매한 형식에서 현재/공통 IEEE 형식으로 부동 소수점 변환을 확인하는 그래픽 계산기를 만드는 데 필요했습니다. 코드를 공유 하겠지만 C#으로 작성되었습니다. –

답변

5

숫자는 숫자 (일반적으로 메모리에 two's complement으로 저장되어 있기 때문에)를 10 진수에서 16 진수로 "변환"할 수 없습니다. 가능하면 모든 숫자가 동일한 숫자로 표현됩니다. 정확히 일치하는 숫자 라인에 나타납니다.

int num = 15; 
printf("%d", num); /* prints 15 */ 
printf("0x%x", num); /* prints 0xf */ 
printf("0%o", num); /* prints 017 (octal) */ 

num = 0xf; 
printf("%d", num); /* prints 15 */ 
printf("0x%x", num); /* prints 0xf */ 
printf("0%o", num); /* prints 017 (octal) */ 

num = 017; 
printf("%d", num); /* prints 15 */ 
printf("0x%x", num); /* prints 0xf */ 
printf("0%o", num); /* prints 017 (octal) */ 
5

정수 유형 기본이 정말하지 않습니다. 당신이 말할 때 :

int a = 100; 
int b = 0x64; 

... 모두 ab는 같은 값을 가지고있다. a을 16 진수 (또는 b 10 진수)로 변환하는 것에 대해 이야기하는 것은 말이되지 않습니다.

0

음,이

int i = 100; 
char c = i; // c now has the value 0x64 (aka decimal 100) 

정말 당신이 i은 정말 인쇄 할 때 활동하기 시작 255

숫자 기지보다 크지 있는지 확인 제외 할 필요가 아무것도 아니다 또는 인간에게 숫자를 표시하는 것. 메모리의 숫자가 올라가는 한 100은 0x64이고 0144는 1100100입니다. 이들은 모두 같은 값이므로 모두 동일한 비트 세트로 나타납니다.

스페인어로 색상을 녹색으로 표시하는 방법을 묻는 것과 같습니다. 녹색은 사용하는 언어에 관계없이 녹색입니다. 그것은 당신이 당신이 사용하고자하는 언어를 고려해야한다는 단어로 쓰는 방법을 고안하려고 할 때에 만 가능합니다. 따라서 숫자를 사용하고 어떤 기반을 사용할 것인지 결정합니다.

0

100의 십진수는 0x64이고 '변환'은 필요하지 않습니다. 정수의 밑은 해석의 문제 일뿐입니다.