JS 는 10 진 변환 36 진 예제 코드 를 실현 합 니 다.
우 리 는 평소에 코드 를 쓸 때 가끔 진법 전환 의 문제 에 부 딪 힌 다.흔히 볼 수 있 는 것 은 2 진법,8 진법,10 진법,16 진법 간 의 전환 이지 만 36 진법 은 들 어 본 적 이 없다.여기 서 JS 로 36 진법 의 실현 을 간단하게 시도 해 보 자.
사고 하 다.
36 진수 의 구성
시작 하기 전에 우 리 는 36 진법 의 숫자 구성 을 잘 정리 해 야 36 진법 에 대해 뚜렷 한 인식 과 후속 적 으로 숫자 에 대한 전환 을 가 질 수 있다.16 진수 가 0-9 와 a-f 사이 의 문자 로 구성 되 어 있다 는 것 을 잘 알 고 있 습 니 다.그러면 36 진 은 요?a-f 를 계속 20 자리 뒤로 미 루 면 알 수 있 듯 이 그의 자모 부분 은 a-z 26 개의 영문 자모 로 구성 되 어 있 기 때문에 36 진수 는 0-9,a-z 로 구성 된다.
수치 준비
그것 의 구성 을 정리 한 후에 10 진수 가 어떤 전환 을 거 쳐 36 진수 가 될 수 있 는 지 생각 하기 시작 했다.우 리 는 먼저 36 개의 수치 가 있 는'창고'배열 을 준비 해 야 한다.이 배열 은 36 진수 의 모든 수 치 를 저장 하 는 데 사용 된다.10 진수 가 진법 전환 을 해 야 할 때 수치 에 따라 이 창고 에 들 어가 36 진수 의 값 을 꺼 내 고 창고 에서 0-9 는 36 진수 의 0-9,10-35 는 36 진수 의 a-z 를 대표 한다.코드 는 다음 과 같다.
function getNums36() {
var nums36 = [];
for(var i = 0; i < 36 ; i++) {
if(i >= 0 && i <= 9) { // 0-9
nums36.push(i)
} else { // a-z
nums36.push(String.fromCharCode(i + 87)); // ASCII
}
}
console.log(nums36,'--------'); //
return nums36;
}
이루어지다
창고 가 구 축 된 후에 우 리 는 진법 전환 과정 을 분해 하기 시작 했다.
var res = n % 36;
이 10 진수 가 36 진수 로 바 뀌 는 가장 낮은 값 을 얻 으 려 면 res 를 창고 에 던 져 36 진수 에 해당 하 는 수 치 를 얻 고 unshift 로 arr 1 위 에 저장 합 니 다.
arr.unshift(nums36[res]);
최 하위 처리 가 끝 난 후,우 리 는 이 숫자 에 대해 진 위 를 진행 하여,더욱 높 은 자릿수 의 값 을 처리 해 야 한다.
n = parseInt(n/36);
이로써 순환 을 완성 하 였 다.우 리 는 while 로 n 에 대해 res 의 수 치 를 계속 취하 고 계속 진 위 를 한다.마지막 으로 10 진 수 를 36 진수 로 바 꿀 수 있다.
주의 하 세 요.이 때 는 이전에 설 치 된 neg 의 마이너스 판단 을 1 위 에 더 하 는 것 을 기억 하 세 요.
arr.unshift(neg)
마지막 으로 36 진수 되 돌리 기
return arr.join("");
코드
// 36 0-9 a-z
function getNums36() {
var nums36 = [];
for(var i = 0; i < 36 ; i++) {
if(i >= 0 && i <= 9) {
nums36.push(i)
} else {
nums36.push(String.fromCharCode(i + 87));
}
}
return nums36;
}
function scale36(n) {
//
// 16 : 0-9 a-f 36 : 0-9 a-z
const arr = [];
var nums36 = getNums36();
// 36 10
if(!Number.isInteger(n)){// ,
console.warn(' ');
return n;
}
var neg = '';
if(n < 0){//
neg = '-';
n = Math.abs(n)
}
while(n) {
var res = n % 36;
console.log(res,'+++++++');
arr.unshift(nums36[res]);
//
n = parseInt(n/36);
console.log(n,'---------');
}
arr.unshift(neg)
return arr.join("");
}
console.log(scale36(20)); // 10
넓히다7 진수 의 실현
이 템 플 릿 은 10 진법 이 다른 진법 에 대한 전환 에 도 적 용 됩 니 다.우 리 는 창고 의 수 치 를 수정 해 야 합 니 다.여 기 는 LeetCode 의 7 진법 문 제 를 예 로 들 면 됩 니 다.
504.7 진수
정 수 를 정 해서 7 진법 으로 바 꾸 고 문자열 로 출력 합 니 다.
예시 1:
입력:100 출력:"202"
7 진수 의 수치 창 고 를 먼저 준비 합 니 다.
function getNums7() {
var nums7 = [];
for(var i = 0; i < 7 ; i++) {
nums7.push(i)
}
return nums7;
}
나머지 수치 와 진 위 를 수정 하면 템 플 릿 재 활용 을 완성 할 수 있 습 니 다.
var res = n % 7;
n = parseInt(n/7);
function getNums7() {
var nums7 = [];
for(var i = 0; i < 7 ; i++) {
nums7.push(i)
}
return nums7;
}
var convertToBase7 = function(num) {
//
const arr = [];
var nums7 = getNums7();
var neg = '';
if(num < 0){//
neg = '-';
num = Math.abs(num)
}
if(num == 0) {
return num + "";
}
while(num) {
var res = num % 7; //
arr.unshift(nums7[res]);
//
num = parseInt(num/7);
}
arr.unshift(neg);
return arr.join("");
}
작은 매듭이 예 를 통 해 알 수 있 듯 이 조금 만 수정 하면 우 리 는 10 진법 이 다른 진법 에 대한 임 의 전환 을 할 수 있다.핵심 은 res 의 잉여 와 창고 수치 구축 에 있다.우 리 는 끊 임 없 는 진입 과 while 순환 을 통 해 최종 적 으로 우리 가 원 하 는 진 수 를 얻 을 수 있다.
JS 의 10 진법 전환 36 진법 실현 에 관 한 이 글 은 여기까지 소개 되 었 습 니 다.더 많은 JS 의 10 진법 전환 36 진법 실현 에 관 한 내용 은 우리 의 이전 글 을 검색 하거나 아래 의 관련 글 을 계속 조회 하 시기 바 랍 니 다.앞으로 많은 응원 바 랍 니 다!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
JS 판단 수조 네 가지 실현 방법 상세그러면 본고는 주로 몇 가지 판단 방식과 방식 판단의 원리를 바탕으로 문제가 있는지 토론하고자 한다. 예를 들어 html에 여러 개의 iframe 대상이 있으면 instanceof의 검증 결과가 기대에 부합되지 않을...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.