Vyhledávání na webu

java - Parsování binárního řetězce jako byte v JavaScriptu


Mám binární řetězec jako "11100011" a chci ho převést na byte. Mám funkční příklad v Java níže:

byte b1 = (byte)Integer.parseInt("11100011", 2);
System.out.println(b1);

Zde bude výstup -29. Ale pokud napíšu podobný kód v JavaScriptu, jako níže:

parseInt('11100011', 2);

Dostanu výstup 227.

Jaký JavaScriptový kód bych měl napsat, abych získal stejný výstup jako Java?

Odpověď č. 1

Java interpretuje byte jako číslo se znaménkem v doplňku dvojky, které je záporné, protože nejvyšší bit je 1. Javascript jej interpretuje jako bezznaménkové, takže je vždy kladné.

Zkuste toto:

var b1 = parseInt('11100011', 2);
if(b1 > 127) b1 -= 256;