2010-06-30 18 views
12

Tôi có một chuỗi các giá trị ngắn có giá trị từ 0 đến giá trị lớn nhất của một đoạn ngắn. Tôi mở rộng dữ liệu (để hiển thị nó dưới dạng TYPE_USHORT) sao cho các giá trị ngắn kết quả nằm trong khoảng từ 0 đến 65535. Tôi cần in một số giá trị được chia tỷ lệ nhưng không thể tìm ra cách. Dữ liệu nằm trong một mảng và trong BufferedImage.Làm cách nào để in một đoạn ngắn dưới dạng một dòng không được ký trong Java

+0

Jim, câu hỏi trước khi điều này cuối cùng tôi đã tìm ra cho bản thân mình và câu trả lời đăng tải không phải là những gì tôi muốn, tôi phải chấp nhận nó không? Tôi nên nói rằng dữ liệu nằm trong cả một mảng ngắn và trong hình ảnh đệm. Cảm ơn –

Trả lời

23

Cách đơn giản nhất là chuyển đổi sang int:

short s = ...; 
int i = s & 0xffff; 

Các bitmask là làm cho việc chuyển đổi cho một giá trị trong khoảng 0-65.535 hơn -32.768-32.767.

+0

Cảm ơn, điều đó có vẻ đúng! –

13

Kể từ Java 1.8, tương tự có thể được thực hiện với Short.toUnsignedInt:

System.out.println("signed s=" + s + ", unsigned s=" + Short.toUnsignedInt(s)) 
+3

Thật là một sự khác biệt. –

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