gpt4 book ai didi

c++ - 在 C 中垂直打印字节数组

转载 作者:行者123 更新时间:2023-11-30 20:20:11 25 4
gpt4 key购买 nike

我有 4 个字节数组,每个数组包含 4 个字节,当我打印它们时,它们水平打印,但我需要它们垂直打印。这在C语言中可能吗?我知道当我使用 printf() 并向其传递数组时,它会自动打印所有四个字节。我可以像普通数组一样将数组 segmentation 为四个单独的字节并将每个字节打印在单独的行上吗?一定有办法。

为了说明我正在做的事情,这是我遇到问题的部分:

    byte a0 = state[0];
byte a1 = state[1];
byte a2 = state[2];
byte a3 = state[3];
state[0] = lookup_g2[a0] ^ lookup_g3[a1] ^ a2 ^ a3;
state[1] = lookup_g2[a1] ^ lookup_g3[a2] ^ a3 ^ a0;
state[2] = lookup_g2[a2] ^ lookup_g3[a3] ^ a0 ^ a1;
state[3] = lookup_g2[a3] ^ lookup_g3[a0] ^ a1 ^ a2;
for (int i = 0; i < 4; i++)
{
printf("%02x", state[i]);
}
printf("%s", "\n");

这会在每一行完整地打印每个字节数组,直到 main() 结束。最好,我想以四个为一组垂直打印每个数组。

另外,我知道有人建议我使用 sprintf() ,但现在我正在使用 printf() 直到我能弄清楚如何打印垂直。

示例:

printf("%02x", state[0]);

产量:

b9 e4 47 c5

我正在寻找的输出是:

b9
e4
47
c5

然后接下来的迭代将在第一列旁边打印它们的值,如上所示。这可能吗?

最佳答案

Then how do you print the next line of bytes in a column next to the first up to four columns then move to a new line?

如果我按照您尝试执行的操作,您有 4 个 state 数组(或 4 行和 4 列),并且您想要输出第一行以及每个数组的第一个元素(一个每列中的一个元素)、下一行(每列中的一个元素),依此类推。如果你想单独输出每个值,那么你需要嵌套循环,在内循环中一次输出一个值(打印一列中的每个元素),然后输出一次'\n'内循环完成。

类似于以下内容:

#include <stdio.h>

typedef unsigned char byte;

int main (void) {

byte state[] = { 0xb9, 0xe4, 0x47, 0xc5 },
n = sizeof state / sizeof *state;

for (byte i = 0; i < n; i++) { /* outer loop */
for (byte j = 0; j < n; j++) /* inner loop */
printf (" %02x", state[(j+i)%n]); /* stuff */
putchar ('\n'); /* newline after inner loop completes */
}

return 0;
}

示例使用/输出

$ ./bin/byteperline
b9 e4 47 c5
e4 47 c5 b9
47 c5 b9 e4
c5 b9 e4 47

注意:我只是使用第一个数组中的值 4 次来构造四列。您将根据数据的要求调整索引方案(例如,将行打印为列或将列打印为行),无论您如何操作,都必须在行中输出值-明智的方式。您无法打印一列,然后备份 4 行并偏移 5 个字符,然后打印下一列。 (我的意思是你可以,但这远远超出了你的问题,并且需要一个单独的诅咒库才能以可移植方式完成)

仔细检查并告诉我这是否是您的意图。

关于c++ - 在 C 中垂直打印字节数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47299208/

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