我已经阅读了以下内容,并且我知道我的校验码肯定是单字节值,但是当我转换时,我倾向于得到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。