在 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 的十进制值转换为十六进制字符?的主要内容,如果未能解决你的问题,请参考以下文章

如何将一个char数组中元素插入到另一个char数组中指定元素后面,在java语言环境,但不能使用java的内置函数

java中的char函数怎么用

java 中有没有getchar和putchar函数呢?

c中是不是有一个函数可以返回char数组中char的索引?

java GBK中,是如何将两个字节,组装成一个汉字的

如何判断一个字符串中是不是包含另一个字符串