我使用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);
答案 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);
}
}
bytearray
是byte[]