<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    int型數據轉成byte數據時出現的問題

    Posted on 2008-08-06 11:47 stonebow 閱讀(2195) 評論(1)  編輯  收藏 所屬分類: JAVA遇到問題
     由于byte的表示范圍是-128127,如果使用下面方法轉換將會發生致命的錯誤:

    int num = 40000;

    byte first = num/256;

    byte second = num%256;

    這樣,只要firstsecond超過127,就會溢出,從而合并起來的int數值會和原數值不一致。

     

    int input2 = 130;

    byte a3 = (byte) input2;

    input2 = a3;

    System.out.println(input2);

    對于上述代碼,結果為-126,而不是開始的130,也是溢出的問題,所以一定要注意。

     

    解決方法:

    第一種:較為不徹底,對于正整數來說,可以除以127,從而使byte不會溢出

    第二種:轉化的時候按位操作,從而不使用強制轉化損失精度:

    // iSource轉為長度為iArrayLenbyte數組,字節數組的低位是整型的低字節位

    public static byte[] toByteArray(int iSource, int iArrayLen)

     {

             byte[] bLocalArr = new byte[iArrayLen];

             for ( int i = 0; (i < 4) && (i < iArrayLen); i++)

             {

                       bLocalArr[i] = (byte)( iSource>>8*i & 0xFF );

             }

             return bLocalArr;

    }  

    // byte數組bRefArr轉為一個整數,字節數組的低位是整型的低字節位

    public static int toInt(byte[] bRefArr)

     {

             int iOutcome = 0;

             byte bLoop;

            

             for ( int i =0; i<4 ; i++)

             {

                       bLoop = bRefArr[i];

                       iOutcome+= (bLoop & 0xFF) << (8 * i);

             }

             return iOutcome;

    }

    Feedback

    # re: int型數據轉成byte數據時出現的問題  回復  更多評論   

    2008-08-06 12:40 by stonebow
    這里面有個問題,就是bLoop & 0xFF的作用,如果不加的話結果會出錯。因為byte轉化為int的時候是按值相等傳遞,所以byte值為10000001的時候,對應的int為1111111111111…111110000001,這樣就會出現問題,這時候&0xFF就會只保留最后實際的8位了。

    只有注冊用戶登錄后才能發表評論。


    網站導航:
     
    主站蜘蛛池模板: 国产国产人免费视频成69堂| 国产拍拍拍无码视频免费| 在线永久免费的视频草莓| 亚洲视频在线观看地址| 中文免费观看视频网站| 亚洲欧洲尹人香蕉综合| 99久久这里只精品国产免费| 亚洲熟妇自偷自拍另欧美| 在线免费观看视频你懂的| 亚洲av日韩综合一区二区三区| 国产精品麻豆免费版| 国产亚洲蜜芽精品久久| 人人狠狠综合久久亚洲高清| 国产免费人成视频尤勿视频| 亚洲AV无码一区东京热| 国产免费女女脚奴视频网| 亚洲另类图片另类电影| 18禁无遮挡无码网站免费| 美女被免费网站视频在线| 色噜噜AV亚洲色一区二区| 久久免费视频99| 亚洲综合一区二区三区四区五区| 国产成人综合久久精品免费| 国产精品视频全国免费观看| 亚洲国产女人aaa毛片在线| www.999精品视频观看免费| 国产成人亚洲综合在线| 国产亚洲一区二区在线观看| 曰批全过程免费视频网址| 亚洲av午夜电影在线观看| 亚洲人成网站在线观看播放| 1000部拍拍拍18免费网站| 精品国产亚洲AV麻豆| 亚洲av色福利天堂| 一二三四影视在线看片免费 | 亚洲理论片在线中文字幕| 午夜神器成在线人成在线人免费| 人妻仑乱A级毛片免费看| 亚洲黄色网址大全| 亚洲成年看片在线观看| 99视频有精品视频免费观看|