詳細(xì)問題描述
[內(nèi)容]
使用建立h5+app移動(dòng)端和java服務(wù)器端連接并傳輸byte流數(shù)據(jù)。然而當(dāng)java傳輸值為負(fù)數(shù)的byte數(shù)據(jù)時(shí),移動(dòng)端接收到的值并非8位2進(jìn)制byte,而是16位二進(jìn)制補(bǔ)碼的值。
重現(xiàn)步驟
[步驟]
服務(wù)端與h5+app建立連接 服務(wù)端發(fā)送包含負(fù)數(shù)的byte流 h5+app端使用java.io.接收byte流,但收到的值出現(xiàn)錯(cuò)誤
[結(jié)果]
10,
16,
48,
48,
57,
55,
50,
48,
48,
48,
49,

49,
48,
48,
48,
48,
48,
48,
16,
65533,
65533,
6,
26,
12,
27979,
35797,
25151,

38388,
32,
65533,
75,
40,
1,
50,
6,
24322,
24120
[如果語言難以表述清晰,拍一個(gè)視頻或截圖,有圖有真相]
服務(wù)端發(fā)送的bytes流:
見附件1-3
h5+app接收到的值
見附件4
IDE運(yùn)行環(huán)境說明
[ 或 。如果你用其他工具開發(fā)uni-app,也需要在此說明]
[版本號(hào)]
uni-app運(yùn)行環(huán)境說明
[運(yùn)行端是h5或app或某個(gè)小程序?]
h5+app
[運(yùn)行端版本號(hào)]
[項(xiàng)目是cli創(chuàng)建的還是創(chuàng)建的?如果是cli創(chuàng)建的,請(qǐng)更新到最新版cli再試]
[編譯模式是老模板模式還是新的自定義組件模式?]
App運(yùn)行環(huán)境說明
[版本號(hào)]
.0
[手機(jī)型號(hào)]
小米5s
附件
[IDE問題請(qǐng)?zhí)峁┻\(yùn)行日志。菜單幫助-查看運(yùn)行日志,點(diǎn)右鍵打開文件所在目錄嘗試建立連接時(shí)出現(xiàn)cli錯(cuò)誤,將log文件壓縮成zip包上傳]
[App問題請(qǐng)?zhí)峁┛芍噩F(xiàn)問題的代碼片段嘗試建立連接時(shí)出現(xiàn)cli錯(cuò)誤,你補(bǔ)充的細(xì)一點(diǎn),問題就解決的快一點(diǎn)]
[可重現(xiàn)代碼片段]
方法中br.read()讀出來的可能不是一個(gè)8位2進(jìn)制byte
methods:{
readMesssage: function(){
var br = new this.InputStreamReader(this.socket.getInputStream());
var bytesResult = new Array();
var byte = -1;
var bytesLen = new Array();
for(var i = 0 ;i < 4;i++){
byte = br.read(); //出錯(cuò)點(diǎn)
bytesLen.push(byte);

}
var len = this.bytesToInt(bytesLen);
console.log(len);
var type = br.read(); //出錯(cuò)點(diǎn)
console.log(type);
var data = new Array();
for(var i = 0 ;i < len;++i){
console.log(i+": "+data);
byte = br.read(); //出錯(cuò)點(diǎn)
data.push(byte);
console.log(i+": "+data);
}
console.log(data);
return data;
},
</script>