c语言在接收网络数据的溢出问题

代码如下:

 int main() {
            struct sockaddr_in addr, fromAddr;
          int socketd, linkSocketd, num;
          size_t size;

          char readData[1024] = {'\0'};
          addr.sin_family = AF_INET;
          addr.sin_port = htons(9900);
          addr.sin_addr.s_addr = INADDR_ANY;

                socketd = socket(PF_INET, SOCK_STREAM, 0);
        if(socketd == -1) {
                         perror("socket");
                                 return 1;
                }
          if(bind(socketd, (struct sockaddr*)&addr, 16) == -1) {
                perror("bind");
                return 1;
        }
        listen(socketd, 20);
        linkSocketd = accept(socketd, (struct sockaddr*)&addr, &size);
        if(linkSocketd == -1) {
                perror("accept");
                return 1;
        }

                size = sizeof(fromAddr);
        readSize = recvfrom(linkSocketd, (void*)&readData, sizeof(readData), 0, &fromAddr, &size);
        printf("接收到%d字节\n", readSize);
        for(num = 0; num <readSize; num++) {
                printf("print_data[%d]:%x\n", num, readData[num]);
        }
          return 0;
}

结果:
接收到22字节
print_data[0]:68
print_data[1]:3a
print_data[2]:0
print_data[3]:3a
print_data[4]:0
print_data[5]:68
print_data[6]:ffffffc9
print_data[7]:ffffffff
print_data[8]:ffffffff
print_data[9]:1
print_data[10]:69
print_data[11]:0
print_data[12]:2
print_data[13]:73
print_data[14]:0
print_data[15]:0
print_data[16]:1
print_data[17]:0
print_data[18]:0
print_data[19]:0
print_data[20]:ffffffa7
print_data[21]:16
在第6、7、8、20元素的结果为何会出现这种情况?????

char readData[1024] = {'\0'};
修改为
unsigned char readData[1024] = {'\0'};
看看

你发送数据的代码是啥样的?不知道你发的数据长啥样,咋定位问题?

上面caozhy回答的应该是正解:

unsigned char uc = 255;
printf("%x\n", uc);    // ff

char c = 255;
printf("%x\n", c);    // ffffffff