[英]convert to unsigned char and unsigned short in Android
我必須將我的字節轉換為 unsigned char 和 unsigned short ,它在 iOS 中是這樣完成的
latitude = (unsigned char)(bytebuffr.getchar(0)) + ((unsigned short)(bytebuffr.getchar(1)& 0xF)) << 8);
如何在我的 android 代碼中實現這一點。 請幫助已經在android中嘗試過但不起作用,
lattitude = (short) ((getUnsignedByte((byte) (bb.getChar(0) & 0xFF))) +
getUnsignedByte((byte) ((bb.getChar(1) & 0x0F))) << 8);
bb 是 bytebuffer 並且 bb.getchar 給了我正在從 bytebuffer 讀取的字節
在這種情況下,您不需要從char
轉換為short
。 由於bb
是一個ByteBuffer
,如果您想從緩沖區讀取兩個字節並將它們用作有符號的 16 位數字,請使用getShort
。 如果您需要從緩沖區讀取兩個字節(不是一個!)並將它們用作無符號的 16 位數字,請使用getChar
。 我懷疑你在想getChar
只讀取一個字節。 它沒有。 char
是 16 位寬。 此外, char
是 Java 中的無符號整數類型。 盡管它用於在字符串中(松散地)表示字符,但它是一個整數(整數)類型。 積分類型有:
byte
:8 位有符號:-128 到 127,包括short
:16 位有符號; -32768 到 32767,含char
:16 位無符號:0 到 65535,包括(又名'\ '
到'\'
)int
: 32 位有符號:-2147483648 到 2147483647,含long
:32 位有符號:-9223372036854775808 到 9223372036854775807,含如果確實需要轉換: char
是無符號的 16 位類型。 short
是有符號的16 位類型。 要在short
使用與char
相同的位,請執行以下操作:
short s = (short)ch;
不需要屏蔽第一個字節或類似的東西。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.