在 java 中,是不是可以使用 char 函数将 0 到 15 的十进制值转换为十六进制字符?
Posted
技术标签:
【中文标题】在 java 中,是不是可以使用 char 函数将 0 到 15 的十进制值转换为十六进制字符?【英文标题】:In java, is it possible to convert a decimal value from 0 to 15 inclusive to a hexadecimal character using the char function?在 java 中,是否可以使用 char 函数将 0 到 15 的十进制值转换为十六进制字符? 【发布时间】:2020-03-20 18:58:49 【问题描述】:例如,我想通过转换 char 将 11 转换为 B。在另一个练习中,我能够做 (char)(69) 来获得 E,我需要做类似的事情。这可能吗?谢谢!
【问题讨论】:
是的,有可能…… 但是我该怎么做呢? 我尝试使用 (char)(11) 但没有用。 如果char(69)
给你一个E,你为什么认为char(11)
会给你一个B?
等等,哎呀,太愚蠢了……你是怎么做到的?
【参考方案1】:
我尝试使用 (char)(11) 但没有用
这个方法有点幼稚,请看character table
想通过转换 char 将 11 转换为 B
不,这不是办法。理论上,字符可以具有范围内的任何值,但在 Java 中,char 用于可打印字符
以不同格式表示数字称为编码。
你可以自己做,见https://www.baeldung.com/java-byte-arrays-hex-strings
char[] hexDigits = new char[2];
hexDigits[0] = Character.forDigit((num >> 4) & 0xF, 16);
hexDigits[1] = Character.forDigit((num & 0xF), 16);
或者您可以使用开箱即用的encoder。
有一些methods 用于基本转换,如在 cmets 中
【讨论】:
【参考方案2】:Java 在Integer
类中有一些方法,例如:
Integer.toBinaryString(int i);
Integer.toOctalString(int i);
Integer.toHexString(int i);
第三个 on 将整数转换为十六进制表示。如果您的号码在变量num
中,那么您可以将其转换为十六进制,如下所示:
String hex = Integer.toHexString(num);
这会将数字从十进制转换为十六进制。
public class Test
public static void main(String[] args)
int num = 10;
String hex = Integer.toHexString(num);
System.out.println(hex);
这将给出以下输出:
a
如果您希望字母大写,请在后面添加hex = hex.toUpperCase();
String hex = Integer.toHexString(num);
。 toUpperCase()
方法将 String 中的所有小写字母转换为大写,而不更改任何其他字符。
public class Test
public static void main(String[] args)
int num = 10;
String hex = Integer.toHexString(num);
hex = hex.toUpperCase();
System.out.println(hex);
现在这段代码将给出:
A
【讨论】:
以上是关于在 java 中,是不是可以使用 char 函数将 0 到 15 的十进制值转换为十六进制字符?的主要内容,如果未能解决你的问题,请参考以下文章