如何将数据从int(int port1 = 52010)复制到一对无符号字符(unsigned char port2[2]
?我不知道如何处理该部门。
答案 0 :(得分:5)
您通常使用遮蔽和移动。
const unsigned short port = 52010;
uint8_t port2[2];
大端:
port2[0] = port >> 8;
port2[1] = port & 255;
小端:
port2[0] = port & 255;
port2[1] = port >> 8;
对于像IP网络中使用的端口号这样的东西,你通常会转到所谓的“网络字节顺序”(又名“big-endian”),并且有一个特殊的宏来执行此操作:
const unsigned short port_n = ntohs(port);
请注意,这会将端口号保留为unsigned short
,并在必要时交换字节。
答案 1 :(得分:2)
port2[0] = port1 >> 8;
port2[1] = port1 & 0x00FF;
或以相反的顺序,取决于字节顺序