将char连接到int类型

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

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

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
,然后尝试类似的方法连接
字符:

这假定要连接的
char
s存储在
无符号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];
}
long int chars\u in\u int=0;
对于(int i=0;i<4;i++){

chars_in_int为什么您希望输出?131330将等同于值为2、1和2的
char
s的“串联”?0x0010201是十进制的66049