乐趣区

关于java:记一次数据类型隐式转换导致的异常

在编写一个签名 / 验签的功能模块时,呈现一个状况,在本我的项目中签名验签测试失常,但在生产端解决时有时胜利,有时谬误。

生产端也是应用的通用明码库,所以排除底层库谬误的可能。

测试多个实例,并打印出具体参数。发现法则,只有一个参数为 0 时,就胜利,1 时就失败。

减少生产端参数日志,对解决流程 debug,并查看生产端的代码,发现一处可疑的类型转换,从 byte 转 byte32,而后由 byte32 转 uint8。对这部分代码专门测试,发现 byte 转 byte32 时,0x01 变成了 0x0100…,转成 uint8 时,变成了 0,也就是主动取了后 8 位。

退出移动版