gpt4 book ai didi

delphi - 如何将记录从主机字节顺序转换为网络字节顺序(大端)?

转载 作者:行者123 更新时间:2023-12-02 16:18:41 26 4
gpt4 key购买 nike

我有一条记录:

  Tconnecting = record
var
a: int64;
b: integer;
c: integer;
end;

我需要使用UDP协议(protocol)发送到服务器

我填了

  packet.a := StrToInt64('0x1234567890');
packet.b := 0;
packet.c := RandomRange(1, 9999999);

并发送

  SetLength(send_data, sizeof(packet));
send_data := RawToBytes(packet, SizeOf(packet));
udp.SendBuffer(make_it_big_endian(send_data)); <-- the question... "network byte order"

或者也许我做错了什么?我需要发送“大端”数据包

pack("N*", int64, int, int); (this is in PHP)

谢谢。

最佳答案

您实际上所做的是将主机字节顺序转换为网络字节顺序。所有标准套接字库都提供辅助函数来执行此操作。

例如,Winsock 提供 htons、htonl 等。相反方向则有 ntohs、ntohl 等。如果您使用 Indy,则等效函数是 GStack.HostToNetwork GStack.NetworkToHost.

您应该将每个字段序列化为字节流,并由适当的 hton* 函数转换每个字段。然后您可以将字节流放在网络上。

关于delphi - 如何将记录从主机字节顺序转换为网络字节顺序(大端)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13505211/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com