gpt4 book ai didi

java 与 javascript 的 isNaN 等效的代码

转载 作者:行者123 更新时间:2023-11-28 08:45:00 24 4
gpt4 key购买 nike

我在 javascript 中找到了一个简单而漂亮的 Base64 库,并想从中创建一个 java 类(我知道用于此目的的现有 java 库!,但我不感兴趣)。所以这里是一段使用 isNaN 的 javascript 代码..我需要一个等效的 java

        if (isNaN(chr2)) {
enc3 = enc4 = 64;
} else if (isNaN(chr3)) {
enc4 = 64;
}
<小时/>

并包含javascript函数:

// private property
_keyStr: "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",
private static final Integer NaN = 0;

public static String encode(String input){
StringBuffer output = new StringBuffer();
int chr1 = 0, chr2 = 0, chr3 = 0;
int enc1, enc2, enc3, enc4;
int i = 0;


input = _utf8_encode(input);

while (i < input.length()) {
//before: chr1 = Character.codePointAt(input, i++);
if (i+1>=input.length()){
chr1 = NaN;
i++;
} else {
chr1 = Character.codePointAt(input, i++);
}

if (i+1>=input.length()){
chr2 = NaN;
i++;
} else {
chr2 = Character.codePointAt(input, i++);
}

if (i+1>=input.length()){
chr3 = NaN;
i++;
} else {
chr3 = Character.codePointAt(input, i++);
}

enc1 = chr1 >> 2;
enc2 = ((chr1 & 3) << 4) | (chr2 >> 4);
enc3 = ((chr2 & 15) << 2) | (chr3 >> 6);
enc4 = chr3 & 63;

//System.out.println(chr2+ " -> "+ String.valueOf(Character.toChars(chr2)) + "| "+String.valueOf(Character.toChars(chr2)).length());
//System.out.println(chr3+ " -> "+ String.valueOf(Character.toChars(chr3)) + "| "+String.valueOf(Character.toChars(chr3)).length());

if (isNaN(chr2)) {
enc3 = enc4 = 64;
} else if (isNaN(chr3)) {
enc4 = 64;
}

output.append(_keyStr.charAt(enc1))
.append(_keyStr.charAt(enc2))
.append(_keyStr.charAt(enc3))
.append(_keyStr.charAt(enc4));

}

return output.toString();
}

private static boolean isNaN(int charCodePoint){
if(charCodePoint==NaN)
return true;
else
return false;
}
<小时/>

我在 java 中的最后一次尝试是使用:

Character.isDigit((char)chr2)..不行..

参见 isNaN(int charCodePoint) .. 也不行

<小时/>

并包含java等效函数:

//字符串_keyStr = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";

public static String encode(String input){
StringBuffer output = new StringBuffer();
int chr1, chr2, chr3;
int enc1, enc2, enc3, enc4;
int i = 0;

input = _utf8_encode(input);

while (i < input.length()) {
chr1 = Character.codePointAt(input, i++);
chr2 = Character.codePointAt(input, i++);
chr3 = Character.codePointAt(input, i++);

enc1 = (chr1 >> 2);
enc2 = (((chr1 & 3) << 4) | (chr2 >> 4));
enc3 = (((chr2 & 15) << 2) | (chr3 >> 6));
enc4 = (chr3 & 63);

if (Character.isDigit((char)chr2)==false) {
enc3 = enc4 = 64;
} else if (Character.isDigit((char)chr3)==false) {
enc4 = 64;
}

output.append(_keyStr.charAt(enc1))
.append(_keyStr.charAt(enc2))
.append(_keyStr.charAt(enc3))
.append(_keyStr.charAt(enc4));

}

return output.toString();
}
<小时/>

与 javascript 的 isNaN 函数等效的正确 java 函数是什么?

最佳答案

没有直接等效的方法适用于您的案例。

在调用codePointAt()之前,您需要检查索引是否在范围内。如果不是,则相当于您的 JavaScript 代码从 charCodeAt() 获取 NaN。然而,这会使其余代码变得相当复杂。

简而言之,JavaScript 代码的编写方式不适合轻松地翻译成 Java。

关于java 与 javascript 的 isNaN 等效的代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19949812/

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