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

C 如何将字节数组转换为整数?,c,arrays,integer,byte,typeconverter,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]; } uint64\u t res=0; for(int i=0;i!=8;i++){ res这应该可以做到:

假设我有这个字节

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];
}
uint64\u t res=0;
for(int i=0;i!=8;i++){

res这应该可以做到:

int convertToInt(uint8_t k[8], bool leastSignificantFirst) { 
    int res = 0;
    for (int i = 0; i < 8; ++i) { 
        if (leastSignificantFirst) { 
            res |= (k[i] & 1) << (7 - i);
        } else {
            res |= (k[i] & 1) << i;
        }
    }
    return res;
}
int convertToInt(uint8_t k[8],bool leastSignificantFirst){
int res=0;
对于(int i=0;i<8;++i){
如果(最小重要性优先){

res |=(k[i]&1)我错误地将此标记为重复。请忽略接近投票。我的道歉:((这是一个写得很糟糕的问题,因为你自己没有表现出任何努力来做这件事,但它不是重复的。)好吧,你可以使用一个cast,例如,但你不应该。(类似int i=*(int*)k;)@KenWhite对此表示抱歉,我将在学习过程中了解更多信息,因为所有这些对我来说都是全新的。使用强制转换数组将导致可怕的、不需要的结果。它将数组的地址转换为整数。