2010-06-30 9 views
12

Tengo una matriz de cortos cuyos valores oscilan entre 0 y el valor máximo de un corto. Escalo los datos (para mostrarlos como TYPE_USHORT) de manera que los valores cortos resultantes oscilan entre 0 y 65535. Necesito imprimir algunos de los valores escalados pero no puedo entender cómo. Los datos están en una matriz y en una Imagen Buffered.Cómo imprimo un corto como un corto sin firmar en Java

+0

Jim, la cuestión antes de que esto finalmente me di cuenta por mí mismo y la respuesta publicado no era lo que quería, lo acepto de todos modos? Debería haber dicho que los datos están en una serie de imágenes cortas y en la imagen almacenada en el búfer. Gracias –

Respuesta

23

La forma más sencilla es convertir a int:

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

La máscara de bits es hacer la conversión dar un valor en el rango 0-65535 lugar de -32.768-32.767.

+0

Gracias, eso parece ser correcto! –

13

Desde Java 1.8, el mismo se puede hacer con Short.toUnsignedInt:

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

Qué diferencia hace el tiempo. –

Cuestiones relacionadas