2013-02-21 2 views
0

저는 C에서 작성 중이며 정수를 변환하는 데 문제가 있습니다. 검사 : 나는라는 정수가C int를 16 진수로 변환하고 마지막 두 자리를 자릅니다.

: 내가 원하는 무엇

는 다음과 같습니다.

이 정수를 16 진수 형식으로 변환 한 다음 마지막 두 자리 만 가져 와서 다시 dez 형식의 정수로 변환하고 싶습니다.

예 :

검사 = -864 진수에서

이 될 것이다 : FFFFFFFFFFFFFCA0

두 마지막 자리는 다음과 같습니다

A0

그리고 "A0"DEZ 형식은에 : 160.

C에서 어떻게 할 수 있습니까?

답변

0

이것이 (중급) 16 진수 표현과 어떤 관련이 있는지 알지 못합니다. 왜 당신이 왜 그럴 필요가 있는지 이해할 수 없습니다. 간단히 검사의 마지막 바이트를 가지고 적절한 형식 문자열을 사용하여 인쇄 : 문자는 1 비트와 같이

printf("checksum is %d\n", checksum & 0xff); 
1
char m_c_end_dec = (char)checksum & 0xff; 
int m_end_dec = (int)m_c_end_dec; 

간단한 캐스트가 마지막 비트를 소요하고 int로 다시 개주, A0을 160으로 지정하십시오.

0

또는 문자열 형식을 사용하십시오. 예를 들어

의 printf ("%의 02x"검사)

또는 대문자에 대한 의 printf ("% 02X", 검사)는 결과 문자열에 동의하면

0

conversion to hex는, 재귀 적으로 실현 될 수있다 . 이 문자열에서 쉽게 마지막 두 자릿수를 자르고 (google/SO 확인) 다시 변환 할 수 있습니다.

관련 문제