我正从套接字接收一些数据。
之后,我想打印接收到的字符数组中的单个字节。将字符串转换为字符后打印单字节
下面是我使用的代码:
char buf[100];
int i = 0;
while (1)
{
rc = recv(socket_fd, buf, sizeof(buf), 0);
if (rc > 0)
{
printf("Pos1 = %x.\n", (char)buf[17]);
printf("Pos2 = %x.\n", (char)buf[22]);
}
}
但这打印出4个字节。如果我将字符转换为无符号字符,则打印单字节。那么这两个类型转换之间的区别是什么,导致打印的字节数不同。
输出:
Pos1 = 1
Pos2 = ffffff83
为什么使用'%x'?你需要十六进制值吗? – Jarvis
是的。我希望以十六进制打印该值。 –
分享您的输出。你是如何确定它正在打印4个字节的? –