在Java中将多个char转换为字符串中的int

时间:2015-04-26 18:33:17

标签: java unicode char int

我了解如何将单个char转换为int,但如何将String转换为char,以便我可以转换{{1转到char s?例如,对于字符串int

hello

输出应该可以很容易地将五个字母chars[1] = h => 104 chars[2] = e => 101 chars[3] = l => 108 chars[4] = l => 108 chars[5] = o => 111 转换为五个单独的整数,每个整数代表一个字符,然后将它们转换回String并将它们打印为单个char再次。

4 个答案:

答案 0 :(得分:1)

您可以尝试这样:

String s = "hello";
char[] data = s.toCharArray(); // returns a length 5 char array ( 'h','e','l','l','o' )

现在您可以调用此函数将其转换为int。

int charToInt(char []data,int start,int end) throws NumberFormatException
{
    int result = 0;
    for (int i = start; i < end; i++)
    {
        int digit = (int)data[i] - (int)'0';
        if ((digit < 0) || (digit > 9)) throw new NumberFormatException();
        result *= 10;
        result += digit;
    }
    return result;
}

答案 1 :(得分:0)

您可以在StringBuilder类的构造函数参数中传递给定字符串,并使用codePointAt(int)方法。它返回指定索引处的字符的ASCII值。

StringBuilder中还有其他有用的方法,例如codePointBefore(int)appendCodePoint(int),它们允许您查看字符的代码点,并将带有指定代码点的字符附加到{分别为{1}}。

答案 2 :(得分:0)

使用getBytes(),您可以获得byte[],其中包含String中每个字母的数字代表:

byte[] text = "hello".getBytes();

for(byte b : text) {
    System.out.println(b);
}

这给出了与结果相同的结果:

String text = "hello";

for(char c : text.toCharArray()) {
    System.out.println((int) c);
}

这是我可能想到实现这一目标的最简单方法。将其转换回String:

byte[] byteArray = "hello".getBytes();

String string = new String(byteArray);

答案 3 :(得分:0)

我在此假设每个<context-param> <param-name>contextConfigLocation</param-name> <param-value>/WEB-INF/config/spring/applicationContext.xml</param-value> </context-param> <listener> <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> </listener> 的{​​{1}}值应与该字符的Unicode code point对应。如果是这样,那么解决方案是微不足道的:您只需要在intchar类型之间进行类型转换。这是因为在Java中,char实际上是Integral type,就像int一样。 char类型可以包含表示16位Unicode字符(intchar'\u0000')的代码点的整数值。

解决方案首先是使用toCharArray'\uffff'转换为0...65535。然后,只需将每个String转换为char[]即可获得Unicode代码点值:

char

同样,强制转换为int以获取值:

int capitalACodePoint = (int)'A';

一个可运行的例子:

char

打印出来

char capitalA = (char) 65;

此代码也适用于非ASCII字符。将输入更改为

String input =  "hello";        
List<Integer> codePoints = new ArrayList<>();

for (char c : input.toCharArray()) {
    int codePoint = (int)c;
    codePoints.add(codePoint);
    System.out.println(String.format(
            "char$ %d %s equals %d", 
            codePoints.size(), c, codePoint));
}

StringBuilder sb = new StringBuilder();

for (int codePoint : codePoints) {
    sb.append((char) codePoint);
}
System.out.println(sb);

打印出来

char$ 1 h equals 104
char$ 2 e equals 101
char$ 3 l equals 108
char$ 4 l equals 108
char$ 5 o equals 111
hello