android如何从getinputstream获取无符号字节数组

时间:2013-10-03 14:04:02

标签: android bytearray inputstream

我使用getInputStream中的socket;但是,当我想将我的字节数组转换为long时,它将得到错误的数字。当我使用调试模式查看字节数组的每个值时,我发现该值将被签名。如何将已签名的字节数组转换为无符号数组?或者我错误地认为问题与signed问题无关。如果有任何信息不足,请告诉我。感谢。

以下是我的代码:

InputStream inputStream = socket.getInputStream();

byte[] fileNameBytes = new byte[8];
byte[] totalLengthBytes = new byte[8];
try {
    inputStream.read(fileNameBytes);
    inputStream.read(totalLengthBytes);
} catch (Exception ex) {
    Log.e("Error in InputStream: " + ex.getMessage());
}

totalLength = byteArrayToLong(totalLengthBytes);

1 个答案:

答案 0 :(得分:0)

java有签名/未签名的问题。即,没有未签名。当我需要将原始字节上传到C#web服务时,要求字节为无符号(即0到255与-127到+127),我使用的代码我并不自豪,看起来像: / p>

        List<Integer> l = new ArrayList<Integer>();
        if (bytearray != null) {
            for (int i = 0; i < bytearray.length; ++i) 
            {
                l.add(Integer.valueOf((char) bytearray [i]) & 0x00FF);
            }
        }

bytearraybyte[]

的位置