【发布时间】:2021-03-01 00:25:04
【问题描述】:
我正在尝试将“密码”之类的字符串转换为十六进制值,然后将其放在一个长数组中,循环正常工作直到达到值“6F”(o char 的十六进制值)然后我有一个例外@ 987654324@
String password = "password";
char array[] = password.toCharArray();
int index = 0;
for (char c : array) {
String hex = (Integer.toHexString((int) c));
data[index] = Long.parseLong(hex);
index++;
}
如何将 6F 值存储在 Byte 数组中,因为 6F 大于 1 个字节?请帮我解决这个问题
【问题讨论】:
-
尝试使用正确的方法docs.oracle.com/javase/7/docs/api/java/lang/… 如果您阅读javadocs,您会阅读字符串中的字符必须都是十进制数字
-
那么我可以在字节值中存储像 6F 这样的值吗?@ScaryWombat
-
上面的代码甚至没有处理字节。请参阅 public static final byte MAX_VALUE 一个保持字节可以具有的最大值的常量,27-1。 如果您查看 asci 表,您会看到
o->6F-> @ 987654328@ -
注意:
char也是一个integral type - 可以用于算术并且只转换为其他类型long l = (long) c
标签: java arrays types byte byte-shifting