java在Android中转换为无符号字符和无符号短字符
我必须将字节转换为无符号字符和无符号短字符,在iOS中就是这样做的
latitude = (unsigned char)(bytebuffr.getchar(0)) + ((unsigned short)(bytebuffr.getchar(1)& 0xF)) << 8);
如何在我的安卓代码中实现这一点。请帮忙 已经在安卓系统中尝试过了,但不起作用
lattitude = (short) ((getUnsignedByte((byte) (bb.getChar(0) & 0xFF))) +
getUnsignedByte((byte) ((bb.getChar(1) & 0x0F))) << 8);
bb是bytebuffer和bb。getchar给我字节,字节是从字节缓冲区读取的
# 1 楼答案
在这种情况下,不需要将} 。如果需要从缓冲区读取两个字节(不是一个),请使用^{} 并将其用作无符号16位数字。我怀疑你认为
char
转换为short
。由于bb
是一个ByteBuffer
,如果您想从缓冲区读取两个字节,并将它们用作有符号的16位数字,请使用^{getChar
只读取一个字节。它没有。char
是16位宽。而且,char
在Java中是an unsigned integral type。虽然它用于表示字符串中的字符(松散),但它是整数类型。积分类型包括:byte
:8位有符号:-128到127,包括short
:16位有符号-32768至32767(含)char
:16位无符号:0到65535,包括在内(又名'\u0000'
到'\uffff'
)int
:32位有符号:-2147483648到2147483647,包括在内long
:32位有符号:-9223372036854775808到9223372036854775807,包括如果确实需要转换:
char
是一种无符号16位类型short
是一种符号16位类型。要在short
中使用与在char
中相同的位,请执行以下操作:不需要屏蔽第一个字节或类似的内容