gpt4 book ai didi

c++ - 在 C 中的 16 字符数组中连接 32 位 int block

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

我有以下数据类型的结果缓冲区:

 char result[16];

问题是,结果是在 4 个 32 位 block 中计算的每个,都需要分配给 128 位结果字符。

int res_tmp[0] = 0x6A09E667;
int res_tmp[1] = 0x6A09E612;
int res_tmp[2] = 0x6A09E432;
int res_tmp[3] = 0x6A09E123;

理想情况下,应该有类似 C 中的串联运算符的东西,例如,

result = res_tmp[0] || res_tmp[1] || res_tmp[2] || res_tmp[3];

最后,结果需要通过套接字发送,如下所示:

while((connection_fd = accept(socket_fd, 
(struct sockaddr *) &address,
&address_length)) > -1)
{
n = write(connection_fd, result, strlen(result));
if (n < 0) printf("Error writing to socket\n");
close(connection_fd);
break;
}

有人知道在 128-bir 结果 char 中连接 32 位字的最简单语法吗?

谢谢,帕特里克

最佳答案

您必须决定 char 数组是以大端还是小端顺序表示结果。如果您的处理器和数组的字节顺序恰好一致,您可以使用union:

union myunion
{
char result[16];
int res_tmp[4];
};

那么你根本不需要复制。

如果您需要处理器的相反字节顺序,您可以使用 htonl

for (i = 0; i < 4; i ++) res_tmp[i] = htonl(res_tmp[i]);

关于c++ - 在 C 中的 16 字符数组中连接 32 位 int block ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13366187/

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