gpt4 book ai didi

将 char 连接为 int 类型

转载 作者:行者123 更新时间:2023-11-30 15:49:43 24 4
gpt4 key购买 nike

过去几个小时我一直在绞尽脑汁,但我需要帮助。几乎尝试为 RTL 设计中使用的阻塞缓存编写 C 模型。我已将 C 中的缓存行定义为“char”类型的数组,以使其可字节寻址。唯一的困难是我一生都无法弄清楚如何将四个字节(字符)连接成要返回的 32 位“int”类型。我已经尝试了所有我能想到的使用 strcat、strncat、strcpy 等的方法,但没有成功。当我用实际字符填充 char 数组时,strcat 返回正确的值,但在使用数字时它的行为不符合预期(strcat 仅返回第一个元素而不是整个 char 数组)。示例代码:

unsigned char aa[4] = {0};
char testet[2] = {1,0};
printf(" aa[0] = %d \n", aa[0]);
printf(" aa[1] = %d \n", aa[1]);
printf(" aa[2] = %d \n", aa[2]);
printf(" aa[3] = %d \n", aa[3]);
printf(" aaconcat as a 32b word is %u \n", *strncat(aa, testet,2));
printf(" aaconcat as a 32b word is %u \n", *strncat(aa, testet,1));
printf(" aa[0] = %d \n", aa[0]);
printf(" aa[1] = %d \n", aa[1]);
printf(" aa[2] = %d \n", aa[2]);
printf(" aa[3] = %d \n", aa[3]);

返回:

aaconcat as a 32b word is 1 
aaconcat as a 32b word is 1
aa[0] = 1
aa[1] = 2
aa[2] = 1
aa[3] = 0

虽然我期待 {testet[0],testet[1],testet[0]} = 131330。

最佳答案

如果您尝试连接实际位,鉴于 {testet[0],testet[1],testet[0]} = 131330 的预期结果,我怀疑您可能正在尝试这样做,然后尝试类似的方法来连接 chars:

这假设您要连接的char存储在unsigned char chararr[4]中。

long int chars_in_int = 0;
for (int i = 0; i < 4; i++ ) {
chars_in_int << 8; /* redundant on first loop */
chars_in_int += chararr[i];
}

这会将 chararr 中索引最低的 char 放置在 chars_in_int 的最高有效位中。

关于将 char 连接为 int 类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16138804/

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