Ho un programma c di seguito, vorrei inviare un messaggio a 32 bit in un ordine particolare Eg.0x00000001.Perché l'output è simile a questo?
#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;
}
Quindi lo provo stampando i valori nel char array. Ho ottenuto risultati nei commenti sopra. Non dovrebbe l'output essere 0 0 e 0 1? poiché but [3] è l'ultimo byte? C'è qualcosa che mi è mancato?
Grazie!
quindi come appare il messaggio quando invio utilizzando sendto() da socket.h? Sarà 0x00000001 o 0x00000100? – kun
@cjk: è necessario utilizzare 'htons' per l'invio, risparmia sapere l'esattezza esatta per te. – Vlad