1
intmax2147483647 2019-01-15 16:29:05 +08:00
不明觉厉
|
2
zgcwkj 2019-01-15 16:31:59 +08:00
Integer.parseInt(要转换, 16)
|
3
javen73 OP @zgcwkj #2 不行呀
[![Fz0mSf.png]( https://s2.ax1x.com/2019/01/15/Fz0mSf.png)]( https://imgchr.com/i/Fz0mSf) |
4
feiyuanqiu 2019-01-15 16:38:08 +08:00 via Android
怪语言、怪类库、怪 ide 之前能不能先想想是不是自己的问题呢?
这个方法下面就是 ecodeHexString 方法 |
5
raphael008 2019-01-15 16:40:53 +08:00
DatatypeConverter.printHexBinary(var).var
|
6
hcymk2 2019-01-15 16:43:07 +08:00
String.format("%02X ", b)
|
7
gaius 2019-01-15 16:44:59 +08:00
要字符串就找 string 结尾的方法
|
8
javen73 OP @feiyuanqiu #4 不是,你这么还这么大火气呢?
我又没逼你回答,我拿到字符串咋处理。再说 char 数字 toString 的结果跟那个方法一样,我还不知道试试其他方法么? |
9
tr0uble 2019-01-15 16:45:08 +08:00
Integer.toHexString(35)
|
10
fireye 2019-01-15 16:51:26 +08:00
这个并未问题啊 10 进制 35 -> 16 进制 23
楼主想说明什么呢 |
12
chenstack 2019-01-15 16:54:07 +08:00
char[] hex = {'2', '3', '2', '3'};
System.out.println(hex); // 2323 结果是没问题的,你拿 Arrays.toString(hex)结果自然是[2, 3, 2, 3] |
13
marcong95 2019-01-15 16:54:50 +08:00
LZ 你要不先温习一波 Java 基础如何。。。
|
17
chenstack 2019-01-15 17:08:33 +08:00
@javen73 #14 因为转换结果是字符数组,不是说 35 变成 23 这个数值。你总不能要求{42, 42} 转成 {2a, 2a},用 char[]表示只能是{'2', 'a', '2', 'a'}。{42, 42} 和 {0x2a, 0x2a}是等价的,不存在转换这个说法
|
18
marcong95 2019-01-15 17:30:59 +08:00
@javen73 你也说了库是 commons-codec,从名字可以得知这是个编码的东西,其目的并不是为了完成某些计算机原理课上 35 -> 0x23 这种事情的。
而 Hex.encodeHex 是把某一段二进制数据编码成 16 进制字符串,输入以 byte[]存储的一段数据,输出一个 16 进制字符串,只是这个字符串用了 char[]形式存储。 你的 a 其实表示的是一块长度为 2 字节的数据块,并不是两个 10 进制数字。 你的输出方式输出了这个字符数组,而不是字符串。如果你通过某种方式(例如`String.valueOf(hex)`)把这个字符数组转回字符串的话,那就是"2323"了。或者使用楼上说得 encodeHexString 直接返回 String 类型的字符串 此外,为了完成某些计算机原理课上的“ 10 进制转 16 进制”这种事情的,可以使用 Integer.toString(整数, 16)这种形式 |