나는 아래의 c 프로그램을 가지고 있는데, 나는 특별한 명령 Eg.0x00000001로 32 비트 메시지를 보내고 싶다. 출력이 왜 이렇게 생깁니 까?
#include <unistd.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <sys/types.h>
#include <stdint.h>
struct test
{
uint16_t a;
uint16_t b;
};
int main(int argc, char const *argv[])
{
char buf[4];
struct test* ptr=(struct test*)buf;
ptr->a=0x0000;
ptr->b=0x0001;
printf("%x %x\n",buf[0],buf[1]); //output is 0 0
printf("%x %x\n",buf[2],buf[3]); //output is 1 0
return 0;
}
는 그럼 문자 배열의 값을 출력하여 인쇄 테스트. 나는 위의 코멘트에서 결과를 얻었다. 출력은 0 0과 0 1이 아니어야합니까? 이후 [3]은 마지막 바이트입니까? 내가 놓친 것이 있습니까?
감사합니다.
그래서 socket.h에서 sendto()를 사용하여 보낼 때 어떻게 보이나요? 0x00000001 또는 0x00000100이 될 것입니까? – kun
@cjk : 보내기 위해'htons'를 사용할 필요가 있습니다. 이것은 당신을위한 정확한 엔디안을 아끼지 않습니다. – Vlad