在java中将int转换为char

Posted

技术标签:

【中文标题】在java中将int转换为char【英文标题】:Convert int to char in java 【发布时间】:2013-08-01 20:09:40 【问题描述】:

下面是代码sn-p,

int a = 1;
char b = (char) a;
System.out.println(b);

但我得到的是空输出。

int a = '1';
char b = (char) a;
System.out.println(b);

我会得到 1 作为我的输出。

有人可以解释一下吗?如果我想像第一个 sn-p 一样将 int 转换为 char,我该怎么办?

【问题讨论】:

"将 int 转换为 char?" 可能是 b = (char)('0' + a),但仅适用于 0 <= a <= 9 十进制值01为非打印字符;它工作正常。 【参考方案1】:
int a = 1;
char b = (char) a;
System.out.println(b);

将打印出带有Unicode code point 1 的字符(开头的字符,不可打印;请参阅此表:C0 Controls and Basic Latin,与 ASCII 相同)

int a = '1';
char b = (char) a;
System.out.println(b);

将打印出带有 Unicode 代码点 49 的字符(对应于 '1')

如果你想转换一个数字 (0-9),你可以给它加上 48 并强制转换,或者类似Character.forDigit(a, 10);

如果您想将 int 转换为 Unicode 代码点,您可以使用 Character.toChars(48) 例如。

【讨论】:

System.out.println('b'+3); 如何使用 println 获得 b3 而不是 101 ?任何其他方式代替 printf? @UnKnown 您需要将其设为字符串而不是字符,如下所示 System.out.println("b" + 3); Character.toChars 在 Unicode 代码点上运行,而不是 ASCII 值。如果您只是将 int 转换为 char,则会得到相同的结果(仅适用于 BMP)。【参考方案2】:

我的回答与 jh314 的回答类似,但我会更深入地解释一下。

在这种情况下你应该做的是:

int a = 1;
char b = (char)(a + '0');
System.out.println(b);

在这里,我们使用“0”,因为字符实际上是由 ASCII 值表示的。 '0' 是一个字符,用 48 的值表示。

我们输入(a + '0'),为了将它们相加,Java 将 '0' 转换为其 ASCII 值,即 48,a 为 1,因此总和为 49。然后我们所做的是:

(char)(49)

我们将int 转换为char。 ASCII 等价于 49 是“1”。您可以通过这种方式将任何数字转换为字符,并且比使用.toString() 方法然后通过.charAt() 方法减去数字更智能和更好。

【讨论】:

【参考方案3】:

您似乎正在寻找Character.forDigit 方法:

final int RADIX = 10;
int i = 4;
char ch = Character.forDigit(i, RADIX);
System.out.println(ch); // Prints '4'

还有一种方法可以将char转回int:

int i2 = Character.digit(ch, RADIX);
System.out.println(i2); // Prints '4'

请注意,通过更改 RADIX,您还可以支持十六进制(基数 16)和最大 36 的任何基数(或 Character.MAX_RADIX,也称为)。

【讨论】:

@ProgrammingNub 定义“int 的值”。 .你不想打印数字 4 吗?或者您想打印 int 的 Ascii 值,以便 65 打印 A ?因为我在这里的回答打印了这个问题要求的预期行为。见ideone.com/09LAFR【参考方案4】:
int a = 1;
char b = (char) a;
System.out.println(b);

你好,我也遇到了同样的问题,但我所做的是以下代码。

int a = 1
char b = Integer.toString(a).charAt(0);
System.out.println(b);

这样你就可以得到 char 类型的十进制值。我使用索引为 0 的 charAt(),因为该字符串中的唯一值是“a”,而且如您所知,“a”在该字符串中的位置从 0 开始。

对不起,如果我的英语解释得不好,希望对你有所帮助。

【讨论】:

【参考方案5】:

您可能希望将其打印为“1”或“a”。

如果您想输入“1”,那么:

int a = 1;
char b = (char)(a + '0');
System.out.println(b);

如果你想要'a'作为输入,那么:

int a = 1;
char b = (char)(a-1 + 'a');
System.out.println(b);

java 将 ascii 值转换为 char :)

【讨论】:

【参考方案6】:
int a = 1;
char b = (char) (a + 48);

在 ASCII 中,每个字符都有自己的编号。 char '0' 是十进制的 48,'1' 是 49,依此类推。所以如果

char b = '2';
int a = b = 50;

【讨论】:

【参考方案7】:

这里没有人回答真正的“问题”:您正在正确地将 int 转换为 char;在 ASCII 表中,十进制值 01 是“标题开头”,一个非打印字符。尝试查找一个 ASCII 表并在 33 和 7E 之间转换一个 int 值;这会让你看到角色。

【讨论】:

【参考方案8】:

每当您将整数转换为 char 时,它都会返回该 int 的 ascii 值(通过 ascii 表以便更好地理解)

    int a=68;
    char b=(char)a;

    System.out.println(b);//it will return ascii value of 68

    //output- D

【讨论】:

Sort of.... char 是一个 UTF-16 代码单元。 68 作为 UTF-16 代码单元是表示 Unicode 代码点 U+0044 所需的唯一代码单元。 System.out 会将文本的编码更改为默认编码(可能与运行程序的终端/控制台匹配)。 println 接受一个字符并尝试对其进行编码。由于char是一个完整的codepoint,可以试试。由于 U+0044 是几乎所有字符集中的一个字符,因此应该可以成功地将其以无乱码的形式传送到终端。与 ASCII 无关。【参考方案9】:

如果我们谈论的是类类型 - 而不是原语,则必须完成以下技巧:

Integer someInt;
Character someChar;

someChar = (char)Integer.parseInt(String.valueOf(someInt));

【讨论】:

在这个过程中不需要把它变成一个字符串,并且你的括号数不匹配。 西蒙,“括号”。建议怎么做?【参考方案10】:

在java中一个char 一个int。您的第一个 sn-p 在默认字符编码方案(可能是 Unicode)中打印出与 1 的值相对应的字符。 Unicode 字符 U+0001 是非打印字符,这就是您看不到任何输出的原因。

如果你想打印出字符'1',你可以在你使用的编码方案中查找'1'的值。在 Unicode 中,这是 49(与 ASCII 相同)。但这仅适用于数字 0-9。

最好使用 String 而不是 char,并使用 Java 的内置 toString() 方法:

int a = 1;
String b = toString(a);
System.out.println(b);

无论您的系统编码是什么,这都适用,并且适用于多位数字。

【讨论】:

抱歉,char 不是 int,因为它由不同数量的字节组成(快速参考。char-int representation - ***)。 char 可以用数字来表示,你是对的,但它不是整数。 另外,我想你可能会发现第二行应该是“String b = Integer.toString(a);” char 数据类型在java.lang.Character 以及它与 int 和 unicode 代码点和代码单元的关系中得到了很好的定义。【参考方案11】:

如果您想根据 ascii 代码打印 ascii 字符并且不想超出此范围(如 unicode 字符),您可以将变量定义为字节,然后使用 (char) 转换。即:

public static void main(String[] args) 
    byte b = 65;
    for (byte i=b; i<=b+25; i++) 
        System.out.print((char)i + ", ");
    

顺便说一句,字母“A”的ASCII码是65

【讨论】:

【参考方案12】:

确保整数值是字母/字符的 ASCII 值。

如果没有,那就做吧。

for e.g. if int i=1

然后添加 64 使其变为 65 = 'A' 的 ASCII 值 然后使用

char x = (char)i;

print x

// 'A' will be printed 

【讨论】:

【参考方案13】:

有一种方法可以将int 转换为char,即使不使用ASCII 值。

例子:

int i = 2;
char ch = Integer.toString(i).charAt(0);
System.out.println(ch);

解释:

首先将整数转换为字符串,然后使用字符串函数charAt(),从字符串中提取字符。由于整数只有一个数字,索引0 被赋予charAt() 函数。

【讨论】:

【参考方案14】:

首先,将int(或其他类型)转换为String

int a = 1;
String value = String.valueOf(a);

然后,将 String 转换为 char

char newValue = value.charAt(0);

这样可以避免空输出...

System.out.println(newValue);

【讨论】:

【参考方案15】:

查看以下程序了解完整的转换概念

class typetest
    public static void main(String args[])
        byte a=1,b=2;
        char c=1,d='b';
        short e=3,f=4;
        int g=5,h=6;
        float i;
        double k=10.34,l=12.45;
        System.out.println("value of char variable c="+c);
        // if we assign an integer value in char cariable it's possible as above
        // but it's not possible to assign int value from an int variable in char variable 
        // (d=g assignment gives error as incompatible type conversion)
        g=b;
        System.out.println("char to int conversion is possible");
        k=g;
        System.out.println("int to double conversion is possible");
        i=h;
        System.out.println("int to float is possible and value of i = "+i);
        l=i;
        System.out.println("float to double is possible");
    

希望,它至少会有所帮助

【讨论】:

【参考方案16】:

如果你想将一个字符转换成它对应的整数,你可以这样做:

int a = (int) 'a';
char b = (char) a;
System.out.println(b);

这是因为在 ASCII 中有些项目不能正常打印。

例如,数字 97 到 122 是对应于小写字母 a 到 z 的整数。

【讨论】:

【参考方案17】:
public class String_Store_In_Array 

    public static void main(String[] args) 
    
        System.out.println(" Q.37 Can you store string in array of integers. Try it.");

        String str="I am Akash";
        int arr[]=new int[str.length()];
        char chArr[]=str.toCharArray();
          char  ch;
        for(int i=0;i<str.length();i++)
        

            arr[i]=chArr[i];
        
        System.out.println("\nI have stored it in array by using ASCII value");
        for(int i=0;i<arr.length;i++)
        

            System.out.print(" "+arr[i]);
        
        System.out.println("\nI have stored it in array by using ASCII value to original content");
        for(int i=0;i<arr.length;i++)
        
             ch=(char)arr[i];

            System.out.print(" "+ch);
        
    

【讨论】:

请提供解释,而不仅仅是代码转储。 虽然这篇仅包含代码的帖子可能会回答这个问题,但请添加解释原因。这将帮助未来的用户根据他们的情况评估答案。

以上是关于在java中将int转换为char的主要内容,如果未能解决你的问题,请参考以下文章

如何使用“ord”函数在 Haskell 中将 Char 转换为 Int?

无法在赋值c ++中将char *转换为int * [关闭]

在 C 和 C++ 中将 int 值转换为 char 指针差异

在Java中将字符转换为整数

在 C 和 C++ 中将 char 转换为 int

如何在c#中将十六进制从char []转换为int [重复]