【发布时间】:2022-01-19 15:26:07
【问题描述】:
我在 Java 中有以下问题。我正在使用一种可以产生负字节作为结果的加密算法,出于我的目的,我必须能够以二进制形式处理它们。对于负字节,8 中的第一个或最高有效位是 1。当我稍后尝试将二进制字符串转换回字节时,我得到一个 NumberFormatException,因为我的字节太长了。我可以告诉 Java 将其视为无符号字节并以负字节结尾吗?到目前为止我的代码是这样的:
private static String intToBinByte(int in) {
StringBuilder sb = new StringBuilder();
sb.append("00000000");
sb.append(Integer.toBinaryString(in));
return sb.substring(sb.length() - 8);
}
intToBinByte(-92); // --> 10100100
Byte.parseByte("10100100", 2) // --> NumberFormatException
Value out of range. Value:"10100100" Radix:2
有没有更好的方法从 Java 中的二进制文件中解析 signed 字节? 提前致谢!
【问题讨论】:
标签: java binary byte numberformatexception