我试图通过以下方式将二进制数组转换为十进制:
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位二进制数组转换为十进制数,我必须做几百万次.
任何人都可以帮助我,有没有更快的方法来做到这一点?或者上面的那个好吗?
你的方法是足够的,称之为好我不会混合按位运算和"数学"转换为十进制的方式,即使用
decimal = decimal << 1 | array[i];
Run Code Online (Sandbox Code Playgroud)
要么
decimal = decimal * 2 + array[i];
Run Code Online (Sandbox Code Playgroud)