在 C 中将 Char 数组转换为 Long 错误

标签 c arrays char converters

我尝试将 unsigned long int 转换为 char 但我遇到了一些错误

int main(void)
{
    unsigned char pdest[4];
    unsigned long l=0xFFFFFFFF;
    pdest[0] = l         & 0xFF;
    pdest[1] = (l >>  8) & 0xFF;
    pdest[2] = (l >> 16) & 0xFF;
    pdest[3] = (l >> 24) & 0xFF;

    unsigned long int l1=0;
    l1 |= (pdest[0]);
    l1 |= (pdest[1] << 8);
    l1 |= (pdest[2] << 16);
    l1 |= (pdest[3] << 24);

    printf ("%lu",l1);
}

输出为

18446744073709551615

不是 4294967295?

如何正确执行?

最佳答案

阅读此内容: https://en.wikipedia.org/wiki/C_data_types

...Long unsigned integer type. Capable of containing at least the [0, 4,294,967,295] range;

关于在 C 中将 Char 数组转换为 Long 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50304349/

相关文章:

c - C 中的词频统计(非 C++)

c - Gdb 条件正则表达式中断

c - 信号处理程序代码是否会阻塞主进程?

java - 将整数数组存储到列表整数数组中并按顺序访问这些变量

Java:如何检查字符是否属于特定的unicode block ?

c++ - 返回 char* 出错,打印好,返回不好(c++)

c - 按字典顺序返回内存字符对用户输入进行排序?

java - 如何从java数组中获取非随机样本

arrays - 我们如何在Rust中操纵u8数组的第一位? [复制]

java - 如何将包含字符转义序列的字符串转换为 char?