我目前正在执行网络套接字编程任务,在该任务中,我必须对消息请求进行解码,形式为:
uint8_t buffer[16] = {0xd8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, 0xab}
使用read()读入:
uint8_t buffer[2048];
read(conn->socketfd, buffer, sizeof(buffer)
现在,我需要获取第一个十六进制字节'd8',即二进制11011000,并提取1101的第一个四位,并检索其十六进制数-由0xD给出。
我正在为问题的两个部分苦苦挣扎:
非常感谢您的帮助!在此先感谢:)
uint8_t first_hex_byte = buffer[0]; // 0xd8
uint8_t first_4bits = (buffer[0] >> 4) & 0xf; // 0xD
printf("%x\n", (int)first_4bits); // Print it as hex
但是您必须确保无论从哪里读取套接字中的数据,它都以预期的字节序发送。您可以通过在调试器中检查缓冲区并确保缓冲区字节符合您的期望来对此进行验证。