Rumah > Soal Jawab > teks badan
Saya mempunyai rentetan nombor perpuluhan yang sangat besar Bagaimana untuk menukarnya menjadi rentetan binari?
Oleh kerana nombornya sangat besar, tidak ada cara untuk menukarnya menjadi nombor dan memasukkannya ke dalam pembolehubah keString(2)
某草草2017-05-19 10:16:41
Mengikut prinsip menukar perpuluhan kepada perduaan, simulasi membahagi dengan 2 dan mengambil baki
巴扎黑2017-05-19 10:16:41
Sepatutnya tidak terlalu sukar untuk menulis algoritma sendiri, dan biarkan ia di latar belakang untuk diproses
过去多啦不再A梦2017-05-19 10:16:41
private static String process(ArrayList<String> imp,String HexStr){
String rem = "";
Long remaind = (long) 0;
ArrayList<String> newList = new ArrayList<String>();
Iterator<String> 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<String> splitNum = new ArrayList<String>();
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();
}
Hasil nombor super besar tidak disahkan
0------>0--->0000
135,9234------>14bd82--->0001010010111101109,90010111101109,90999,9099 9999 ------>2386f26fc0ffff--->0010001110000110111100100110111111 0000001111111111111111
0,00-t 2386f26fc10 000--->00100011100001101111001001101111111000001000000000000000
9,9999,9999, 9999,9999 ------>16345785d89ffff--->0001011000110100010101111000010111011000100111111110001101000101011110000101110110001001111111111111110000100111111111111111000100111111111111111000100111111111111111999,9999,9999 9,9999,9999,99. 01111100000001111 111111111111111111111111111111
怪我咯2017-05-19 10:16:41
Tulis apa sahaja yang anda mahukan
function toBin(str)
{
var arr = [];
var remainder,i,str2,num,char;
while(str.length>0) {
str2 = "";remainder=0;
for(i=0;i<str.length;i++) { // str2 = str组成的十进制数 / 2
num = str.charCodeAt(i)-0x30; // num to String
num = remainder*10 + num;
char = Math.floor(num/2).toString();
// 忽略最高为的0 , 即最高为如果是 0 则不放入 str2
if(!(char === "0" && str2 === "")) { str2 += char;}
remainder = num%2;
}
str = str2;
arr.push(remainder); // 保存余数
}
return arr.reverse().join('');
}
console.log(toBin("3")); // 11
console.log(toBin("9")); // 1001
console.log(toBin("10")); // 1010
console.log(toBin("120")); // 1111000
为情所困2017-05-19 10:16:41
Jika ia hanya untuk paparan, anda boleh mempertimbangkan untuk membiarkannya dipindahkan di latar belakang