티스토리 뷰

자바스크립트 문제를 풀다가

10진수를 2진수로, 2진수를 10진수로 바꿔야 할 상황이 생겼다.

 

이를 해결하기 위한 함수는

toString()과 parseInt()다.

 

둘의 차이는

10진수를 다른 수로 변환시키는가, 다른 수를 10진수로 변환시키는가

에 있다.

 

10진수를 다른 진수로 변환하기 위해서는 toString()을,

다른 진수를 10진수로 변환하기 위해서는 parseInt()를 쓴다.


toString()

특정 객체를 문자열로 반환해준다. 가 정석이지만

원하는 10진수를 특정 진수로 변환하고 싶을때 사용한다.

어떤 수를.toString(몇진수로 변환하고 싶은지)

때문에 인자로 2와 36사이의 정수가 들어간다. radix라고 함.

let intNum = 3;
console.log(intNum.toString(2));	//11
//11은 eleven이 아니고 이진수의 00011임.

intNum = 32;
console.log(intNum.toString(16));	//20
//20은 twenty가 아니고 16진수의 00020임(2*16).

함수의 이름에도 적혀있듯, 반환된 11과 20의 타입은 string이다.

let intNum = 32;
let stringed = intNum.toString(16);
console.log("type of intNum: ",typeof(intNum));		//type of intNum:  number
console.log("type of stringed: ",typeof(stringed));		//type of stringed:  string

radix 값으로 2와 36사이의 정수가 아닌 다른 수가 들어간다면 

RangeError 에러가 뜬다.


parseInt()

문자열을 특정 진수의 정수로 변환한다.

인수로는 parseInt('변환시키고자하는 문자열', 해당 수의 진수) 가 들어간다.

여기서 문자열은 타입이 문자열이므로 숫자여도 ''안에 삽입한다.

물론 두번째 인자도 radix다.

let intNum = "11";
let parsing = parseInt(intNum, 2);
console.log(parsing);   //3   

이렇게 10진수로 변환된 2진수는 문자열이 아니라 상수가 된다.

let intNum = "11";
let parsing = parseInt(intNum, 2);
console.log(typeof(parsing));   //number   

출처:
DYLE2님 블로그 https://ithub.tistory.com/290
MDN

 

반응형
댓글