gpt4 book ai didi

java - java中字符串错误地转换为十六进制

转载 作者:行者123 更新时间:2023-12-01 04:21:11 25 4
gpt4 key购买 nike

当我只想根据条件将特定字符转换为十六进制时,由于我无法弄清楚的原因,我的java代码将字符串转换为十六进制。请参阅下面的代码和输出。

for (int n = 0; n < line.length(); ++n) {
char aChar = line.charAt(n);
if (Character.isLetter(aChar) || Character.isDigit(aChar)
|| aChar == '_' || aChar == '-' || aChar == '.'
|| aChar == '*') {
encoded += +aChar;
} else if (aChar == ' ') {
encoded += +'+';
} else {
String hexValue = Integer.toHexString(aChar);
encoded += '%' + hexValue;
}
}

System.out.println("The encoded string is: " + encoded);

System.out.println("Length in chars is: " + encoded.length());

输出:

Enter a line of text to be URL encoded

aaddcc

The string read is: aaddcc

Length in chars is: 6

The encoded string is: 97971001009999

Length in chars is: 14

上面的代码是它的核心

最佳答案

正如评论中所述,失败的原因是您尝试进行字符串连接时出现了一个小错误。连接两个 String 对象的正确方法如下例所示:

"Hello " + "World"; //Adding two String constants
"1st String" + stringVariable; //Appending a String variable to a String constant
firstString + secondString; //Concatenating two String variables
"Favourite letter: " + 'a'; //Join a String and a char
"Age: " + 21; //Join a String and an int - result is "Age: 21"

您使用的 += 是一个快捷方式,但 x += y 本质上扩展为 x = x + y 。在您编写 encoded += + '+' 的地方,它会扩展为 encoded =encoded++ '+'。这对于 char 类型变量没有意义,但如果将 char 转换为 int,则编译器可以解释该表达式为 encoded + (+43),其中 43 是将 '+' 字符转换为 int 的结果(即 (int)'+'),而 (+43) 是一种不必要的精确方式来说明 43 为正。

下面两行是等效的

encoded += +'+';
encoded += 43;

同样,当您使用 aChar 时,尽管转换为 int 将导致根据当前字符添加不同的整数。

关于java - java中字符串错误地转换为十六进制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18885336/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com