此代码
uint32_t length;
BYTE* message;
printf("Inspecting message with length %d and contents: ",length);
for(int i=0;i<length;i++)
printf("%d ",message[i]);
printf("\n");
....
char* outbuff;
outbuff = (char*) malloc(sizeof(char) * length + sizeof(int));
uint32_t data_length = htonl(length);
memcpy(outbuff,&data_length,sizeof(int));
memcpy(outbuff + sizeof(uint32_t),message,length);
printf("Sending outbuff over network with length %d and contents: ",outbuff[i]);
printf("\n");
不会如实地将数据从消息和长度复制到副本。但是,一旦我将outbuff的类型从char *更改为BYTE *,它就可以正常工作。
有人知道为什么会这样吗? documentation在这方面无济于事。
EDIT.1:将&length
更改为&data_length
。我手动键入代码,而不是在SX中复制。
EDIT.2:用于打印出BYTE数组的代码。