簡體   English   中英

在 Android 中轉換為 unsigned char 和 unsigned short

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM