如何在Java中将short类型打印为无符号short?

17

我有一个short数组,它的值范围在0和short类型的最大值之间。我对数据进行了缩放(以TYPE_USHORT形式显示),使得结果short值的范围在0到65535之间。我需要打印一些经过缩放的值,但是我无法弄清楚如何实现。这些数据在一个数组和BufferedImage中。

2个回答

34

最简单的方法是将其转换为int类型:

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

这个位掩码是为了将转换后的值限制在0-65535范围内,而不是-32768-32767。


非常有效,但比Short.toUnsignedInt()不易读。 - scottb
@scottb:没错 - 但这个功能是在那个回答发布后四年才被加入的 :) - Jon Skeet

23

自Java 1.8版本起,可以使用Short.toUnsignedInt实现相同的功能:

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

6
时光流转,变化无穷。 - Nate Lockwood

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接