Tôi có thông số kỹ thuật đọc hai byte tiếp theo được ký int.cách đọc int đã ký từ byte trong java?
Để đọc rằng trong java tôi đã sau
Khi tôi đọc một int đăng nhập java sử dụng đoạn mã sau tôi nhận được một giá trị của 65449
logic để tính unsigned
int a =(byte[1] & 0xff) <<8
int b =(byte[0] & 0xff) <<0
int c = a+b
Tôi tin rằng điều này là sai bởi vì nếu tôi và với 0xff tôi nhận được một số không tương đương
vì vậy tôi đã xóa & 0xff và logic như được đưa ra bên dưới
int a = byte[1] <<8
int b = byte[0] << 0
int c = a+b
which gives me the value -343
byte[1] =-1
byte[0]=-87
Tôi đã cố gắng bù đắp các giá trị này theo cách thông số đọc nhưng điều này có vẻ sai.Khi kích thước của heap không rơi xuống dưới mức này.
Cách nào phù hợp để tính toán int đã ký trong java?
Sau đây là cách spec đi
somespec() { xtype 8 uint8 xStyle 16 int16 }
xStyle: Một số nguyên ký đại diện cho một cơ cấu bù đắp (theo byte) từ khi bắt đầu Widget này() để bắt đầu một cấu trúc xStyle() mà diễn tả được thừa kế các kiểu được xác định bởi tiện ích con trang cũng như các kiểu áp dụng cụ thể cho tiện ích con này.
Bạn có thể hiển thị ví dụ về đầu vào và kết quả mong muốn không? nó không rõ ràng .. – MByD
tôi đọc điều này từ một luồng bằng cách sử dụng một đặc điểm kỹ thuật. Tôi đọc hai byte theo spec và các giá trị khi tôi đọc trong một mảng byte khi chuyển đổi thành các byte riêng lẻ là byte [1] = - 1 và byte [0] = - 87 nói trong một mảng byte chứa hai byte. Đặc tả này đánh dấu hai byte này là int int và tôi không biết đầu ra chính xác là gì. – Siva