将数据从int复制到2个无符号字符

时间:2013-01-14 14:40:30

标签: c int unsigned-char

如何将数据从int(int port1 = 52010)复制到一对无符号字符(unsigned char port2[2]?我不知道如何处理该部门。

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;

或以相反的顺序,取决于字节顺序