2013-08-14 1 views
0

누군가 여기서 제발 0xffffffa5와 0xa5의 16 진수 값을 부여하는 상황을 분명히 할 수 있습니까?c - 16 진수에 대한 값이 너무 많음

#define HEXVAL 0xA5 

int main(int argc, char *argv[]) 
{ 
    int numBytes = 3; 
    char *tmp; 
    char *pyld; 
    pyld = malloc(numBytes * sizeof(char)); 
    memset(pyld, 0, sizeof(pyld)); 
    tmp = pyld; 

    *(tmp) = HEXVAL; 
    printf("out = %x\n", pyld[0]); // -> ffffffa5 
} 

나는 "out = ffffffa5"대신 "out = a5"를 예상했습니다. pyld에 서명 된 값을 추가하여 pyld를 unsigned char로 설정하지 않으려합니다.

감사합니다.

답변

0

시작하려면 calloc을 사용 하시겠습니까? 힙 공간을 포맷합니다.

문제를 해결하려면 tmp를 서명하지 않아야합니다. pyld는 계속 서명 할 수 있습니다. 올바른 값을 출력하기 위해 tmp를 보류하는 것을 잊지 마십시오.

#include <stdio.h> 
#include <stdlib.h> 

#define HEXVAL 0xA5 

int main(int argc, char *argv[]) 
{ 
    int numBytes = 3; 
    unsigned char *tmp; 
    char *pyld; 

    pyld = calloc(numBytes, sizeof(char)); 
    tmp = pyld; 
    *tmp = HEXVAL; 
    printf("pyld = %X\n", *pyld); 
    printf("tmp = %X\n", *tmp); 

    return 0; 
} 

여기에 도움이 출력

pyld = FFFFFFA5 
tmp = A5 

희망입니다 :

여기에 내 작품입니다!

+0

알렌, 귀하의 의견을 주셔서 감사합니다. 1 문자열을 추가하고 만들려는 3 가지 값이있는 상황을 어떻게 처리 할 수 ​​있습니까? 예를 들어, #DEFINE VALONE = 0x55 – txcotrader

+0

#DEFINE VALTWO = 0xA5 #DEFINE VALTHREE = 0xFF의 나는 5613055. 감사의 바이너리 010101011010010,111,111,111의 동등 또는 10 진수로 0x55A5FF가 포함 된 단일 패킷을 가지고 싶습니다! – txcotrader