c - 如何将字节数组转换为整数?

标签 c arrays integer byte typeconverter

假设我有这个字节

uint8_t k[8]= {0,0,0,1,1,1,0,0}; 

有没有办法让它变成一个整数或十六进制?

最佳答案

如果 k 表示 64 位整数的 8 个字节,遍历 8 位整数数组,并将它们从左到右移动到结果中:

uint64_t res = 0;
for (int i = 0 ; i != 8 ; i++) {
    res <<= 8;
    res |= k[i];
}

循环的方向取决于原始int的字节在k数组中的存储顺序。上面的代码片段显示了 MSB 到 LSB 的顺序;如果数组是 LSB 到 MSB,则从 7 开始循环,然后下降到零。

如果字节代表单个位,则移动一位而不是八位。

关于c - 如何将字节数组转换为整数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14492737/

相关文章:

java - 程序在数组中查找与给定值异或的对

ios - 将 NSArray 组件转换为整数或小数

c - atoi 值的差异

c - Berkeley套接字的passivesock portbase含义

ruby - 一种从数组中选择最大值的方法

c - 关于整数内存分配

javascript - 如何运行数字键来为asp.net文本框输入数字?

c - 为什么 `_exit` 有下划线前缀而其他系统调用没有?

c - 通过线程函数发送字符串以使用 fopen() 打开

Javascript - 在单个数组中生成元素的所有组合(成对)