Tôi biết rằng
var foo = parseInt['1111', 2]; // foo will be set to 15
2 là tiền tố cho các số thập lục phân trong JavaScript. Ví dụ, var foo = parseInt['1111', 2]; // foo will be set to 15
3 là viết tắt của số 255.Có một cái gì đó tương tự cho các số nhị phân? Tôi mong đợi
var foo = parseInt['1111', 2]; // foo will be set to 15
4 sẽ đại diện cho số var foo = parseInt['1111', 2]; // foo will be set to 15
5, nhưng điều này không hiệu quả với tôi.Khi được hỏi ngày 10 tháng 5 năm 2010 lúc 13:59May 10, 2010 at 13:59
Misha Moroshkomisha MoroshkoMisha Moroshko
160K220 Huy hiệu vàng493 Huy hiệu bạc729 Huy hiệu Đồng220 gold badges493 silver badges729 bronze badges
6
Update:
Các phiên bản mới hơn của JavaScript - cụ thể là ECMAScript 6 - đã thêm hỗ trợ cho nhị phân [tiền tố
var foo = parseInt['1111', 2]; // foo will be set to 15
6], octal [tiền tố var foo = parseInt['1111', 2]; // foo will be set to 15
7] và hexadecimal [tiền tố: var foo = parseInt['1111', 2]; // foo will be set to 15
2] chữ số:var bin = 0b1111; // bin will be set to 15
var oct = 0o17; // oct will be set to 15
var oxx = 017; // oxx will be set to 15
var hex = 0xF; // hex will be set to 15
// note: bB oO xX are all valid
Tính năng này đã có sẵn trong Firefox và Chrome. Hiện tại nó không được hỗ trợ trong IE, nhưng rõ ràng sẽ là khi Spartan đến.
[Cảm ơn bình luận của Semicolon và câu trả lời của Urish đã chỉ ra điều này.]
Câu trả lời ban đầu:
Không, không có tương đương với số nhị phân. JavaScript chỉ hỗ trợ các chữ số theo số thập phân [không có tiền tố], định dạng lục giác [tiền tố
var foo = parseInt['1111', 2]; // foo will be set to 15
2] và octal [tiền tố Object.defineProperty[
Number.prototype, 'b', {
set:function[]{
return false;
},
get:function[]{
return parseInt[this, 2];
}
}
];
100..b // returns 4
11111111..b // returns 511
10..b+1 // returns 3
// and so on
0].Một giải pháp thay thế có thể là chuyển chuỗi nhị phân cho phương thức
Object.defineProperty[
Number.prototype, 'b', {
set:function[]{
return false;
},
get:function[]{
return parseInt[this, 2];
}
}
];
100..b // returns 4
11111111..b // returns 511
10..b+1 // returns 3
// and so on
1 cùng với radix:var foo = parseInt['1111', 2]; // foo will be set to 15
QWERTY
25.9K21 Huy hiệu vàng103 Huy hiệu bạc125 Huy hiệu Đồng21 gold badges103 silver badges125 bronze badges
Đã trả lời ngày 10 tháng 5 năm 2010 lúc 14:04May 10, 2010 at 14:04
14
Trong Ecmascript 6, điều này sẽ được hỗ trợ như một phần của ngôn ngữ, tức là
Object.defineProperty[
Number.prototype, 'b', {
set:function[]{
return false;
},
get:function[]{
return parseInt[this, 2];
}
}
];
100..b // returns 4
11111111..b // returns 511
10..b+1 // returns 3
// and so on
2 là đúng. Bạn cũng có thể sử dụng chữ B [ví dụ: Object.defineProperty[
Number.prototype, 'b', {
set:function[]{
return false;
},
get:function[]{
return parseInt[this, 2];
}
}
];
100..b // returns 4
11111111..b // returns 511
10..b+1 // returns 3
// and so on
3].Tìm kiếm
Object.defineProperty[
Number.prototype, 'b', {
set:function[]{
return false;
},
get:function[]{
return parseInt[this, 2];
}
}
];
100..b // returns 4
11111111..b // returns 511
10..b+1 // returns 3
// and so on
4 trong thông số kỹ thuật ES6.
Olga
1.6181 Huy hiệu vàng22 Huy hiệu bạc31 Huy hiệu đồng1 gold badge22 silver badges31 bronze badges
Đã trả lời ngày 1 tháng 9 năm 2014 lúc 22:20Sep 1, 2014 at 22:20
Urishurishurish
8.8108 Huy hiệu vàng52 Huy hiệu bạc74 Huy hiệu đồng8 gold badges52 silver badges74 bronze badges
0
Tôi biết rằng mọi người nói rằng việc mở rộng các nguyên mẫu không phải là một ý tưởng tốt, nhưng là kịch bản của bạn ...
Tôi làm theo cách này:
Object.defineProperty[
Number.prototype, 'b', {
set:function[]{
return false;
},
get:function[]{
return parseInt[this, 2];
}
}
];
100..b // returns 4
11111111..b // returns 511
10..b+1 // returns 3
// and so on
Ruffin
15.4K8 Huy hiệu vàng82 Huy hiệu bạc129 Huy hiệu đồng8 gold badges82 silver badges129 bronze badges
Đã trả lời ngày 26 tháng 9 năm 2012 lúc 7:27Sep 26, 2012 at 7:27
Juan Garciajuan GarciaJuan Garcia
2593 Huy hiệu bạc3 Huy hiệu Đồng3 silver badges3 bronze badges
1
Nếu mối quan tâm chính của bạn là hiển thị thay vì mã hóa, có một hệ thống chuyển đổi tích hợp mà bạn có thể sử dụng:
var num = 255;
document.writeln[num.toString[16]]; // Outputs: "ff"
document.writeln[num.toString[8]]; // Outputs: "377"
document.writeln[num.toString[2]]; // Outputs: "11111111"
Tham khảo: MDN trên
Object.defineProperty[
Number.prototype, 'b', {
set:function[]{
return false;
},
get:function[]{
return parseInt[this, 2];
}
}
];
100..b // returns 4
11111111..b // returns 511
10..b+1 // returns 3
// and so on
5
Ruffin
15.4K8 Huy hiệu vàng82 Huy hiệu bạc129 Huy hiệu đồng8 gold badges82 silver badges129 bronze badges
Đã trả lời ngày 26 tháng 9 năm 2012 lúc 7:27May 10, 2010 at 14:18
Juan Garciajuan GarciaPops
2593 Huy hiệu bạc3 Huy hiệu Đồng36 gold badges133 silver badges151 bronze badges
Nếu mối quan tâm chính của bạn là hiển thị thay vì mã hóa, có một hệ thống chuyển đổi tích hợp mà bạn có thể sử dụng:
Tham khảo: MDN trên
Object.defineProperty[
Number.prototype, 'b', {
set:function[]{
return false;
},
get:function[]{
return parseInt[this, 2];
}
}
];
100..b // returns 4
11111111..b // returns 511
10..b+1 // returns 3
// and so on
5String.prototype.b = function[] { return parseInt[this,2]; }
Đã trả lời ngày 10 tháng 5 năm 2010 lúc 14:18
function b[i] { if[typeof i=='string'] return parseInt[i,2]; throw "Expects string"; }
Popspops
29.6K36 Huy hiệu vàng133 Huy hiệu bạc151 Huy hiệu Đồng
String.prototype.lpad = function[padString, length] {
var str = this;
while [str.length < length]
str = padString + str;
return str;
}
for[var i = 0; i < 256; i++]
window['b' + i.toString[2]] = window['b' + i.toString[2].lpad['0', 8]] = window['b' + i.toString[2].lpad['0', 4]] = i;
Theo như tôi biết, không thể sử dụng một trình xê sóng nhị phân trong JavaScript. Tôi có ba giải pháp cho bạn, tất cả đều có vấn đề của họ. Tôi nghĩ thay thế 3 là "đẹp nhất" cho khả năng đọc, và nó có thể nhanh hơn nhiều so với phần còn lại - ngoại trừ chi phí thời gian chạy ban đầu. Vấn đề là nó chỉ hỗ trợ các giá trị lên tới 255.Sep 12, 2012 at 21:52
Thay thế 1:
Object.defineProperty[
Number.prototype, 'b', {
set:function[]{
return false;
},
get:function[]{
return parseInt[this, 2];
}
}
];
100..b // returns 4
11111111..b // returns 511
10..b+1 // returns 3
// and so on
6frodeborliThay thế 2:
71 gold badge20 silver badges30 bronze badgesObject.defineProperty[
Number.prototype, 'b', {
set:function[]{
return false;
},
get:function[]{
return parseInt[this, 2];
}
}
];
100..b // returns 4
11111111..b // returns 511
10..b+1 // returns 3
// and so on
0
Thay thế 3:
Object.defineProperty[
Number.prototype, 'b', {
set:function[]{
return false;
},
get:function[]{
return parseInt[this, 2];
}
}
];
100..b // returns 4
11111111..b // returns 511
10..b+1 // returns 3
// and so on
8var bin = 1111;
var dec = parseInt[bin, 2];
// 15
Phiên bản này cho phép bạn nhập 8 chữ số nhị phân
Object.defineProperty[
Number.prototype, 'b', {
set:function[]{
return false;
},
get:function[]{
return parseInt[this, 2];
}
}
];
100..b // returns 4
11111111..b // returns 511
10..b+1 // returns 3
// and so on
9, 4 chữ số var num = 255;
document.writeln[num.toString[16]]; // Outputs: "ff"
document.writeln[num.toString[8]]; // Outputs: "377"
document.writeln[num.toString[2]]; // Outputs: "11111111"
0 và các chữ số biến var num = 255;
document.writeln[num.toString[16]]; // Outputs: "ff"
document.writeln[num.toString[8]]; // Outputs: "377"
document.writeln[num.toString[2]]; // Outputs: "11111111"
1. Đó là var num = 255;
document.writeln[num.toString[16]]; // Outputs: "ff"
document.writeln[num.toString[8]]; // Outputs: "377"
document.writeln[num.toString[2]]; // Outputs: "11111111"
2 là bất hợp pháp, bạn phải sử dụng var num = 255;
document.writeln[num.toString[16]]; // Outputs: "ff"
document.writeln[num.toString[8]]; // Outputs: "377"
document.writeln[num.toString[2]]; // Outputs: "11111111"
3 hoặc var num = 255;
document.writeln[num.toString[16]]; // Outputs: "ff"
document.writeln[num.toString[8]]; // Outputs: "377"
document.writeln[num.toString[2]]; // Outputs: "11111111"
4.Dec 9, 2011 at 12:25
Đã trả lời ngày 12 tháng 9 năm 2012 lúc 21:52Sergey Metlov
frodeborlifrodeborli27 gold badges91 silver badges150 bronze badges
1
1.4611 Huy hiệu vàng20 Huy hiệu bạc 30 Huy hiệu Đồng
parseInt[110, 2]; // this is 6
parseInt["110", 2]; // this is also 6
Có thể điều này sẽ hữu ích:
parseInt[10000000000000000000000, 2]; // this gives 1
parseInt["10000000000000000000000", 2]; // this gives 4194304
Đã trả lời ngày 9 tháng 12 năm 2011 lúc 12:25Oct 14, 2014 at 13:11
0
Sergey Metlovsergey Metlov
25K27 Huy hiệu vàng91 Huy hiệu bạc150 Huy hiệu Đồng
Không, nhưng bạn có thể sử dụng ParseInt và tùy chọn bỏ qua các trích dẫn.
Nhược điểm duy nhất của việc bỏ qua các trích dẫn là, với số lượng rất lớn, bạn sẽ tràn nhanh hơn:
Đã trả lời ngày 14 tháng 10 năm 2014 lúc 13:11
10001000000010010 or 1001000000010010
Tôi biết điều này không thực sự trả lời Q đã hỏi [đã được trả lời nhiều lần] như vậy, tuy nhiên tôi đề nghị bạn [hoặc những người khác quan tâm đến chủ đề này] xem xét thực tế rằng các trình duyệt tương lai/tương lai/lùi nhất Cách sẽ chỉ sử dụng đại diện Hex.
0x11012 or 0x9012
Từ việc tạo ra Q, dường như bạn chỉ nói về việc sử dụng văn bản nhị phân trong mã của bạn và không xử lý các biểu diễn nhị phân của các giá trị số [mà parstint là con đường để đi].May 26, 2015 at 12:15
Tôi nghi ngờ rằng có nhiều lập trình viên cần xử lý các số nhị phân không quen thuộc với ánh xạ từ 0-F đến 0000-1111. Vì vậy, về cơ bản làm cho các nhóm bốn người và sử dụng ký hiệu hex.epeleg
Vì vậy, thay vì viết 101000000010, bạn sẽ sử dụng 0xA02 có cùng ý nghĩa và dễ đọc hơn nhiều và ít có khả năng gặp lỗi.17 gold badges101 silver badges150 bronze badges
Chỉ cần xem xét khả năng đọc, hãy thử so sánh những gì lớn hơn: 10001000000010010 hoặc 1001000000010010
var foo = parseInt['1111', 2]; // foo will be set to 15
0Và điều gì sẽ xảy ra nếu tôi viết chúng như thế này: 0x11012 hoặc 0x9012Jan 4, 2013 at 11:04
Đã trả lời ngày 26 tháng 5 năm 2015 lúc 12:15jpillora
Epelegepeleg2 gold badges44 silver badges55 bronze badges
10K17 Huy hiệu vàng101 Huy hiệu bạc150 Huy hiệu đồng
var foo = parseInt['1111', 2]; // foo will be set to 15
1Chuyển đổi chuỗi nhị phân thành số và visa-versa.Nov 22, 2021 at 16:55
Đã trả lời ngày 4 tháng 1 năm 2013 lúc 11:04RazerJs
Jpillorajpillora1 silver badge11 bronze badges