मेरे पास एक सी प्रोग्राम है, मैं एक विशेष आदेश 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