gpt4 book ai didi

Java 无法获取正确的 var 值

转载 作者:行者123 更新时间:2023-12-02 03:02:21 24 4
gpt4 key购买 nike

我正在构建一个从 quake 3 引擎主服务器(本例中为 cod2 主服务器)检索服务器列表的工具。这些主服务器响应一个包含 ip 端口信息的大字符串。其中的 ip 是 4 个字符,每个字符都应转换为一个数字 (1-255)。不过,当我尝试这些时,128 以上的数字会转换为这个 unicode 替换字符(65533 或 fffd)。

我尝试了一些事情:

System.out.println("ip: "+String.format("%02x", (int)r.charAt(i+1))+"."+String.format("%02x", (int)r.charAt(i+2))+"."+String.format("%02x", (int)r.charAt(i+3))+"."+String.format("%02x", (int)r.charAt(i+4)));
System.out.println("ip: "+(int)r.charAt(i+1)+"."+(int)r.charAt(i+2)+"."+(int)r.charAt(i+3)+"."+(int)r.charAt(i+4));

在 php 中,这一切都可以通过以下函数使用相同的字符串:

ord(char);

我认为问题可能是我的java使用Unicode,我认为它应该使用ascii(或扩展ascii,不确定)。

[8n] << 这 4 个字符翻译正确

��zH << 这是不正确的,我只是无法从控制台复制正确的符号,如果我将其写入 txt 文件,我会在每个文本编辑器中得到完全不同的结果,所以是的..

有什么解决办法吗?

最佳答案

您可以使用Byte.toUnsignedInt直接将字节转换为整数:

byte[] bytes = { (byte) 244, 12, 13, (byte) 155 }; // an example input

int[] ip = new int[4];
for(int i = 0; i < bytes.length; i++) {
ip[i] = Byte.toUnsignedInt(bytes[i]);
}

System.out.println(Arrays.toString(bytes)); // [-12, 12, 13, -101]
System.out.println(Arrays.toString(ip)); // [244, 12, 13, 155]

关于Java 无法获取正确的 var 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42272118/

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