JS 는 10 진 변환 36 진 예제 코드 를 실현 합 니 다.

5007 단어 JS10 진법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; 
}


이루어지다
창고 가 구 축 된 후에 우 리 는 진법 전환 과정 을 분해 하기 시작 했다.
  • 먼저 들 어 오 는 10 진수 에 대해 검 측 을 하고 부동 소수점 판단 을 먼저 한다.여기 서 부동 소수점 의 진법 전환 을 토론 하지 않 기 때문에 바로 돌아간다.그 다음 에 음수 의 검 측 과 처 리 를 하고 n 이 음수 라면 Math.abs()방법 으로 n 을 양수 로 전환한다
  • 검 측 완료 후 전환 시작while 순환 을 설정 합 니 다.while 내부 에서 먼저 n 값 에 대해 36 의 나머지 처 리 를 하고 res 를 얻 습 니 다.
    
    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 진법 실현 에 관 한 내용 은 우리 의 이전 글 을 검색 하거나 아래 의 관련 글 을 계속 조회 하 시기 바 랍 니 다.앞으로 많은 응원 바 랍 니 다!

    좋은 웹페이지 즐겨찾기