Tôi có một bitmask được lưu trữ trong một byte, vì tôi chỉ cần 8 bit. Khi tôi tạo nó, tôi làm nó như một String (tôi nghĩ nó sẽ dễ dàng hơn theo cách này) và sau đó tôi chuyển nó thành một byte với Byte.parseByte(mask,2)
, nhưng tôi thấy nó không hoạt động với một số giá trị:Tại sao Byte.parseByte ("10000001", 2) ném một NFE?
String bits="10000001";
Byte.parseByte(bits,2);// throws a NFE
Nhưng nếu tôi làm:
byte b=(byte)0x81; //1000 0001
Không có vấn đề gì.
PS: Tôi tìm thấy một workaround, byte b=(byte)Integer.parseInt(bits, 2);
nhưng dù sao tôi muốn biết tại sao tôi không thể chuyển đổi 8 bit thành một byte
Câu trả lời ngắn gọn: vì 'byte' được ký. –
Có, tôi biết điều đó, số 1 đầu tiên cho biết đó là số âm. Quan điểm của tôi là không phải là một vấn đề. Làm thế nào tôi có thể lưu trữ -127 sau đó, nếu tôi nhận được một String? –