0

我使用getInputStreamfrom 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);
4

1 回答 1

0

java 有签名/未签名的问题。即,没有未签名的。当我需要将原始字节上传到期望字节为无符号的 C# Web 服务(即 0 到 255 与 -127 到 +127)时,我使用了我并不引以为豪的代码,如下所示:

        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);
            }
        }

bytearray一个在哪里byte[]

于 2013-10-03T15:09:37.453 回答