在java中将有符号字节转换成无符号字节,然后转换成int16?

xt0899hw  于 2021-07-06  发布在  Java
关注(0)|答案(0)|浏览(225)

我从esp32发送的数据长度为330。代码如下:


# define HS   2

    #define SIZE_BUFFER  (162 - HS)
    #define BS  2
    .
    .
    .
    int16_t buffer[BS][SIZE_BUFFER + HS];
    .
    .
    .
   loop()
   {
    .
    .
    .

    if (send_data){
            SerialBT.write((const uint8_t *)&buffer[3][0], (SIZE_BUFFER + HS) * 2);}
   }

如果我使用简单的python代码,我就可以访问数据

import serial
import numpy as np
.
.
.
data_bytes = ser.read(2 * size) 
res = int.from_bytes(data_bytes, byteorder='big')                   
data = (np.frombuffer(data_bytes, dtype=np.int16).reshape(-1,3))

但是,在java(android)中,没有无符号整数,所以我应该怎么做呢

int data_size = mmInStream.read();

Log.d( "InputStream_5 : ", String.valueOf( data_size ) );
int x = data_size * 2; ///Till here its correct 

byte[] data = new byte[x];
bytes = mmInStream.read(data);
BigInteger newval = new BigInteger( data );
Log.d("Result:", String.valueOf( newval ) );  // what to do next

对于相同的数据点:python中res的结果是:

1395743366482994016120367906701959328940313811521429321623203791215015610896120698403587716303123323476514487386210980511113296227293133748755999126249884966963269554083576932854957319499606672206946690637945927429737437418817759780358808406310496664214087463862251283806109649081292309625966098717557115363596511131444117377905344115257389940198017213691126712969278725996734797426950556703681996156550815363994288346716397799810175186126280896211756990954743286361863235039180008658191372695345728621290483384582238798126321929838346586289088895329092498166002359304466940370854681389408787668885082376341168271280835229419151701368026081320655044598932795793727396724356973250102964972276610698312747041473933394052929893095330364048475720783524627650816885438165149238434155527

java的结果是

-705289714887329283616576107063612632214263054901576259029263759518967598460041390561029945242183295775579640697037904787066482681001486751488385940789863338128750191767553198984721206295994363333290717786312778357170079637438313893150451154698217437458678283897130004422089378581306960630773955403036570373092928857369602300991212986683878288316600295769339022148648726271444364481378851723842834602853319044566264026554782791463665524973556423928094852533391430794360486340043116168365368023604851236124514136956655865175322222980687697927349757704794907680665662432488204761405978577334579832224424529438822375092545726559924235187398126194160241854225068616466240004911911587629309225761498289035507017382826438559470863091164263910371280855712903773197381841797043719567050183

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题