我已经阅读了以下内容,并且我知道我的校验码肯定是单字节值,但是当我转换时,我倾向于得到ffffff9e等。但是我只需要9e。我如何将其转换为仅具有2位数字并且填充为0(如果为1位数字)?

                byte checkCode = r.readByte();             // check code
      System.out.println("checkCode is 0x: " + Integer.toHexString(checkCode));

最佳答案

事实是,如果将0x9e转换为整数,则它将为-98,而ffffff表示minus symbole -。有6个f,因为您正在使用Integer,请尝试使用Long,您将获得更多的f

如果您得到另一个测试数据,例如1e(int值是30),那么结果将符合您的期望。

如果只想删除f,最简单的方法是:

System.out.println("checkCode is 0x: " + Integer.toHexString(checkCode).substring(6, 8));


因为使用的是Integer,所以您始终希望子字符串从6到8。

10-04 14:54