java - Tolke binær streng som byte i JavaScript


Jeg har en binær streng som "11100011" og jeg vil konvertere den til en byte. Jeg har et fungerende eksempel i Java som nedenfor:

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

Her vil outputen være -29. Men hvis jeg skriver noe lignende kode i JavaScript som nedenfor:

parseInt('11100011', 2);

Jeg får en utgang på 227.

Hvilken JavaScript-kode bør jeg skrive for å få samme resultat som Java?

Svar #1

Java tolker byte som et signert tall i tokomplement, som er negativt siden den høyeste biten er 1. Javascript tolker det som usignet, så det er alltid positivt.

Prøv dette:

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