gpt4 book ai didi

c - 我如何找到无符号的 BB[] 使得 (char *) (BB + 1) = "Red Ross!"

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

我有这个简短的代码片段:

 unsigned BB[] = ???; 
printf("%s\n", (char *) (BB + 1));

我希望 printf 的输出是“Red Ross!”。我不知道如何处理这类问题,我认为它与 ASCII 表有关。

这里有一些可以使用的假设:

  • 32 位小端平台
  • 大小(字符)== 1
  • sizeof(无符号) == 4

最佳答案

首先获取目标字符串并打印出每个字节的值:

char *str = "Red Ross!";
int i;
for (i=0; i<strlen(str); i++) {
printf("%02x ", str[i]);
}

这将告诉您要使用的值。然后您可以使用这些值来填充您的 unsigned 数组。

因为 unsigned 值是在 32 位小端实现的,每个元素可以存储 4 个字节,并且这些字节需要以相反的顺序存储,因为它们应该以小端显示 - endian 字节顺序。

例如,如果您想在单个unsigned中按顺序存储 0x01、0x02、0x03 和 0x04,您可以按如下方式进行:

unsigned value = 0x04030201;

因此,使用这两条信息,您可以构建unsigned 数组。此外,因为您需要从 BB + 1 开始,所以数组的第一个元素的值无关紧要。

最后,确保数组的最后一个元素为 0,以便您的字符串以 null 结尾。

关于c - 我如何找到无符号的 BB[] 使得 (char *) (BB + 1) = "Red Ross!",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48502532/

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