byte[] bytes = new byte[20];bytes[1]=0x10;
bytes[1]=bytes[1] | 0x01;
                                
编译出现如下错误:
请高手指教!!!谢谢!!
StringHexString.java:76: 可能损失精度
找到: int
需要: byte
                                        bytes[i/2]=bytes[i/2] | 0x03;
                                                              ^
StringHexString.java:87: 可能损失精度
找到: int
需要: byte
                                        bytes[i/2]=bytes[i/2] | 0x04;
                                                              ^

解决方案 »

  1.   

    |这个运算符是针对int值的,所以会编译出错
    如果你想要不出错,可以这样强制转换
    bytes[1]=(byte)(bytes[1] | 0x01)
      

  2.   

    在JAVA中,所有整型数(byte,char,short,int)的计算(算术、位)都是按int来处理的,你bytes[1] | 0x01是一个计算型int(非常量型int),因此在往byte赋值的时候,需要转型,而这个转型必须你自己做。
    改成
    bytes[i/2]=(byte)(bytes[i/2] | 0x03);