javascript - js大數轉二進位
仅有的幸福
仅有的幸福 2017-05-19 10:14:41
0
6
631

有一個超大超大的10進位數字字串,如何將其轉換成二進位字串?

由於數字特別大,沒辦法轉換成number放在變數裡toString(2)

#
仅有的幸福
仅有的幸福

全部回覆 (6)
某草草

依照十進制轉二進制的原理,自己模擬除2取餘

    巴扎黑

    一種自己寫演算法 應該不會太難 另一種 交給後台處理

      过去多啦不再A梦
      private static String process(ArrayList imp,String HexStr){ String rem = ""; Long remaind = (long) 0; ArrayList newList = new ArrayList(); Iterator itor = imp.iterator(); while(itor.hasNext()){ String ele = itor.next(); Long num = Long.parseLong(rem+ele); Long quot = num / 16; remaind = num%16; rem = remaind.toString(); if(quot > 0){ newList.add(padString(quot.toString(),16,"0",0)); } }; String hexRem = Long.toHexString(remaind); if(newList.isEmpty()){ return hexRem; } else{ return process(newList,hexRem)+hexRem; } } public static String D2Hex(String dNum){ String tmp = dNum; ArrayList splitNum = new ArrayList(); while(tmp.length() > 16){ String high = tmp.substring(0,tmp.length() - 16); splitNum.add(high); String low = tmp.substring(tmp.length() - 16); tmp = low; } splitNum.add(tmp); return process(splitNum,""); } public static String D2B(String dNum){ String hex = D2Hex(dNum); StringBuilder bin= new StringBuilder(); for(int i =0; i < hex.length(); i ++){ String tmp = Integer.toBinaryString( Integer.parseInt(hex.substring(i,i+1),16)); bin.append(padString(tmp,4,"0",0)); } return bin.toString(); }

      超大數結果未驗證
      0------>0--->0000
      135,9234------>14bd82--->000101001011110110000010
      9999,9999,9999 -->2386f26fc0ffff--->00100011100001101111001001101111110000001111111111111111
      1,0000,11111111111111
      . 1110000110111100100110111111000001000000000000000
      9,9999,9999,9999,9999------>16345785d89ffff --->000101100011010001010111100001011101100010011111111111111111

      9999,9999,9999,99999999,08949, cef80ffffffff--->0100111011100010110101101101010000010101101110000101101011001110111110000000111111111111111111111111111111111111111111111111111111111111111111111111111111111111
        刘奇

        隨便寫一張吧

        function toBin(str) { var arr = []; var remainder,i,str2,num,char; while(str.length>0) { str2 = "";remainder=0; for(i=0;i
          伊谢尔伦

          我想問,超大,有多大

            为情所困

            如果只是顯示的話, 可以考慮讓後台轉

              最新下載
              更多>
              網站特效
              網站源碼
              網站素材
              前端模板
              關於我們 免責聲明 Sitemap
              PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!