亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

C#中將double值變成二進制然后寫入文件,Java中載入該文件讀取此二進制double值時不正確

C#中將double值變成二進制然后寫入文件,Java中載入該文件讀取此二進制double值時不正確

慕碼人2483693 2018-12-06 18:10:00
目前已定位到是因為C#中的byte范圍是0到255,而java中byte值為-128到127導致的錯誤。 嘗試過使用C#的sbyte來解決: bw1 = new BinaryWriter(new FileStream("C:\\Users\\DELL\\Desktop\\SpatialIndex\\ctest1.bin", FileMode.Create));?bw2 = new BinaryWriter(new FileStream("C:\\Users\\DELL\\Desktop\\SpatialIndex\\ctest2.bin", FileMode.Create));?????? ??????????byte[] bits=BitConverter.GetBytes(501751.060001268);//測試數據??????????????? sbyte[] bitsb = new sbyte[8];??????????????? for (int i = 0; i < bits.Length; i++)??????????????? {??????????????????? byte abyte = bits[i];??????????????????? if (abyte > 127)??????????????????? {??????????????????????? bitsb[i] = (sbyte)(abyte - 256);??????????????????? }??????????????????? else??????????????????? {??????????????????????? bitsb[i] = (sbyte)abyte;??????????????????? }??????????????????? bw1.Write(bitsb[i]);??????????????????? bw2.Write(bits[i]);??????????????? }? ? 但是寫入后對比,兩個文件中的內容還是一樣,并沒有生成為java二進制格式。 ? 不知道有哪位高人也遇到并解決過類似問題。???????????
查看完整描述

2 回答

?
慕工程0101907

TA貢獻1887條經驗 獲得超5個贊

public static sbyte[] ToJavaBytes(byte[] bytes)
        {
            int len = bytes.Length;
            sbyte[] sbs = new sbyte[len];
            for (int i = 0; i < len; i++)
            {
                var b = bytes[i];
                if (b > 127)
                {
                    sbs[len - 1 - i] = (sbyte)(b - 256);
                }
                else
                {
                    sbs[len - 1 - i] = (sbyte)b;
                }
            }
            return sbs;
        }

?

查看完整回答
反對 回復 2018-12-16
  • 2 回答
  • 0 關注
  • 536 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號