2011-10-28 39 views
7

Tôi cần phải đọc một mảng byte 16 bit dưới dạng số không dấu, và Java không hỗ trợ loại ngắn chưa ký.
Vậy làm cách nào tôi có thể làm điều đó ?? Hãy giúp tôi!!Đọc Byte [] as unsigned short Java

+0

Một mảng byte 16 bit? Vì vậy, nó là một mảng chiều dài 2? –

+0

Tôi nghĩ bạn có nghĩa là chuyển đổi, không đọc, phải không? Vì vậy, chuyển đổi hai byte thành một giá trị số nguyên duy nhất? Bí quyết là bạn sẽ cần lưu trữ nó như một 'int', không phải là' short'. – 101100

+0

Kiểu dữ liệu 'char' về cơ bản là một ký tự 'unsigned'. Nhưng kỹ thuật phổ biến nhất là sử dụng 'int'. – corsiKa

Trả lời

9

Giả sử bạn có nó có sẵn như là dữ liệu nhị phân từ một nguồn không phải Java mà bạn phải đọc và làm việc với các giá trị trong Java: đọc nó như là một (đã ký) short, và sau đó chuyển nó sang int như sau:

int intVal = shortVal >= 0 ? shortVal : 0x10000 + shortVal 

bạn không thể đại diện cho tất cả các giá trị của một ngắn unsigned trong một thời gian ngắn, nhưng trong một int, bạn có thể.

4

Tôi không biết liệu bạn CÓ phải sử dụng chữ ký chưa được ký, nhưng trong trường hợp bạn không làm như vậy, bạn luôn có thể sử dụng thẻ char để giữ một dấu ngắn. Hãy xem bài viết này cung cấp cho một cái nhìn tổng quan đơn giản

http://darksleep.com/player/JavaAndUnsignedTypes.html

Các vấn đề liên quan