首页 > 试题广场 >

二进制转换

[编程题]二进制转换
  • 热度指数:35631 时间限制:C/C++ 2秒,其他语言4秒 空间限制:C/C++ 256M,其他语言512M
  • 算法知识视频讲解
给定二进制字符串,将其换算成对应的十进制数字
示例1

输入

'11000000'

输出

192
        //方法一
        function base10(str) {
            return parseInt(str, 2)
        }
        //方法二 网站通过不了
        function base10(str) {
            let arr = str.split('').reverse()
            let sum = 0
            for (let i = 1; i < arr.length; i++) {
                sum += Number(arr[i]) * (2 ** i)
            }
            return sum
        }
        //方法三
        function base10(str) {
            let arr = str.split('').reverse()
            let sum = 0
            for (let i = 1; i < arr.length; i++) {
                sum += Number(arr[i]) * (Math.pow(2, i))
            }
            return sum
        }
发表于 2022-04-20 21:52:22 回复(1)
function base10(str) {
    // 使用parseInt
    return parseInt(str, 2);
/*
    // 二进制原理计算实现转换
    let decimal = 0;
    for(let i = 0; i < str.length; i++) {
        decimal += str[i]*Math.pow(2,str.length-i-1);
    }
    return decimal;

    // 使用Number() 方法
    return Number("0b"+str);
*/
}


发表于 2021-08-09 20:09:27 回复(0)
function base10(str) {
    return parseInt(str,2);
}
发表于 2020-03-25 17:18:00 回复(0)
function base10(str) {
    return Number('0b'+str);
}

发表于 2019-11-04 23:13:50 回复(0)

直接调用parseInt函数,第二个参数为radix


function base10(str) {
    return parseInt(str, 2)
}
发表于 2018-12-01 10:57:35 回复(0)
将10进制转换为2进制,八进制,十六进制字符串
Object.toString(n) : 即可 (n) 表示进制;
将任意进制字符串转换为十进制,如二进制,八进制,十六进制, 第二数数不写即为最常用的转换为整型十进制;
parseInt("11", 2); // 3 2进制转10进制 
parseInt("77", 8); // 63 8进制转10进制
parseInt("af", 16); //175 16进制转10进制


        function base10(str) {
var result = parseInt(str,2);
return result;
}
发表于 2016-10-20 11:41:44 回复(0)
function base10(str) {
	var result;
	return result=parseInt(str,2);
	// parseInt(String,radix);
        // Number.toString(2);
}

发表于 2016-07-16 22:22:14 回复(0)
function base10(str) {
    var arr=str.split("").reverse()
    var sum=0
    for(var i=0;i<arr.length;i++){
        sum+=arr[i]*(Math.pow(2,i))
    }
    return sum
}
提供不一样的方法,开始没有想到内部方法
发表于 2018-11-08 19:49:25 回复(2)
parseInt方法可以将其它进制转换为十进制,只需要给该方法传入需要转换的字符串和该字符串的进制表示两个参数即可。
function base10(str) {
    /**
        其它进制转十进制
        parseInt(str,2)
        parseInt(str,8)
        parseInt(str,16)
    */
    return parseInt(str,2);
}

编辑于 2015-08-19 10:40:41 回复(5)
parseInt方法的可选参数是操作数的进制说明,不是目标的进制。数字转字符用toString(),字符转数字用parseInt() or parseFloat.

编辑于 2017-03-31 22:08:58 回复(2)
function base10(str) {

    var res=str.split('');
    var sum=0;
    for(var i=0;i<res.length;i++)
    {
        sum+=res[i]*Math.pow(2,res.length-i-1);
    }
    return sum;
}
发表于 2015-09-19 17:40:47 回复(2)
function base10(str) {
    var sum = 0;
    var arr = str.split("").reverse();//避免pow()内写一大串
    for(var i= 0;i<arr.length;i++){
        sum += arr[i]* Math.pow(2,i)
    }
    return sum;
}


发表于 2018-10-19 09:10:57 回复(0)
不使用内部方法,一句代码解决。
function base10(str) {
    return str.split('').reduce(function(total,value,index){
        return total + (value << (str.length - 1 - index));
    },0);
}

发表于 2018-07-23 19:54:41 回复(1)
function base10(str) {
	return parseInt(str,2);
}

测试通过!

发表于 2017-04-10 17:16:49 回复(0)
好像不支持双乘号表示幂,比如 2 ** m,只能用Math.pow(2, m)
发表于 2019-03-17 17:48:04 回复(0)

function base10(str) {

var num = 0; 

for(var i=0;i<=str.length-1;i++) {

 num += str[i]*Math.pow(2,str.length-i-1); 

 } 

 return num;

} //很蠢的一个办法

发表于 2017-03-31 16:59:41 回复(0)
 return parseInt(str,2);

编辑于 2024-03-25 00:00:31 回复(0)
//
const base10 = (str) => Number.parseInt(str,2) 

//
const base10 = (str) => str
        .split('')
        .reverse()
        .reduce((acc, cur, index) => acc += cur * 2 ** index, 0)
发表于 2023-09-12 14:13:16 回复(0)
function base10(str) {
           return parseInt(+str, 2)
}

发表于 2023-09-04 18:28:02 回复(0)
function base10(str) {
    const array = str.split('').reverse();
    let result = 0;
    for (let i = 0; i < array.length; i++) {
        // 手动实现了 Math.pow 方法
        const len = i;
        let num = 2;
        for (j = 0; j <len; j++) {
            num *= 2
        }
        result += num / 2 * array[i];
    }
    return result;
}

发表于 2023-07-26 14:37:51 回复(0)