gpt4 book ai didi

c - 在单字节数组中对齐混合字符串和整数数据的方法有哪些?

转载 作者:太空宇宙 更新时间:2023-11-04 06:57:28 25 4
gpt4 key购买 nike

假设我正在构建一个字节数组以通过 TCP/IP 发送数据。此字节数组包含一个字符串(以空字符结尾的字符数组)以及一个附加到末尾的整数。

那么让我们开始吧。

char buffer[24]; // buffer that will be sent over TCP/IP

char hello[7] = "hello"
int x = 12; // int is 4 bytes

现在假设我执行了一个 memcpy。

memcpy(buffer, hello, 7); // 7 force null character to be copied
memcpy(buffer+7, &x, 4);

通过这样做,我相信我正在将一个整数写入非字对齐地址。我假设这会在打包数据时影响性能?

现在让我们想象一下,我将这些数据发送出去,然后在另一台计算机上接收它。当我继续并解包数据时,我将需要执行正确的转换。但是,我仍在尝试读取一个未按字对齐的整数。这将再次成为性能打击。我可以想象,如果我有一个全部未对齐的整数数组,这种性能损失会加起来。

所以我的问题是:在通过 TCP/IP 发送数据时,是否通常将所有整数/ float 字对齐以避免性能下降?在我上面说明的情况下,最好将字符串的长度扩展到大小 8,以便下一个可用字节是字对齐的吗? memcpy 是否提供任何进一步的方法来自动补偿单词对齐?

最佳答案

不,您不会真正获得性能改进,因为通信程序用于接收任意二进制流,其中整数的字节序被颠倒或它们没有对齐。

只需说出这些位是什么以及它们的含义。

关于c - 在单字节数组中对齐混合字符串和整数数据的方法有哪些?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42427792/

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