C++:二进制到十进制转换

use*_*343 6 c++

我试图通过以下方式将二进制数组转换为十进制:

uint8_t array[8] = {1,1,1,1,0,1,1,1} ;
int decimal = 0 ;    

for(int i = 0 ; i < 8 ; i++)
    decimal = (decimal << 1) + array[i] ;
Run Code Online (Sandbox Code Playgroud)

实际上我必须将64位二进制数组转换为十进制数,我必须做几百万次.

任何人都可以帮助我,有没有更快的方法来做到这一点?或者上面的那个好吗?

unk*_*ulu 5

你的方法是足够的,称之为我不会混合按位运算和"数学"转换为十进制的方式,即使用

    decimal = decimal << 1 | array[i];
Run Code Online (Sandbox Code Playgroud)

要么

    decimal = decimal * 2 + array[i];
Run Code Online (Sandbox Code Playgroud)