Tôi có giá trị đã ký được cung cấp dưới dạng số hex, ví dụ: 0xffeb
và muốn chuyển đổi số nguyên thành -21
làm số nguyên Javascript "bình thường".Javascript: chuyển đổi số nguyên có dấu (hex) thành giá trị javascript
Tôi đã viết một số mã cho đến nay:
function toBinary(a) { //: String
var r = '';
var binCounter = 0;
while (a > 0) {
r = a%2 + r;
a = Math.floor(a/2);
}
return r;
}
function twoscompl(a) { //: int
var l = toBinaryFill(a).length;
var msb = a >>> (l-1);
if (msb == 0) {
return a;
}
a = a-1;
var str = toBinary(a);
var nstr = '';
for (var i = 0; i < str.length; i++) {
nstr += str.charAt(i) == '1' ? '0' : '1';
}
return (-1)*parseInt(nstr);
}
Vấn đề là, rằng chức năng của tôi trả về 1 như MSB cho cả hai con số bởi vì chỉ có tại MSB của các đại diện nhị phân "chuỗi" được xem xét. Và đối với trường hợp này cả hai số là 1:
-21 => 0xffeb => 1111 1111 1110 1011
21 => 0x15 => 1 0101
Bạn có ý tưởng thực hiện điều này hiệu quả hơn và đẹp hơn không?
Greetings, mythbu
bạn nên trừ đi '0x10000' – xiaoyi
@xiaoyi bạn đã đúng, đã sửa nó. –
Không chắc nó quan trọng như thế nào, nhưng vì bạn đang làm việc với hex với 'parseInt', bạn có thể muốn sử dụng' parseInt (a, 16) ' – Ian