这个陈述在java中是否正确?

ars*_*had 3 java datagram

我想使用数据报套接字在两台计算机之间进行数据传输.我这样使用以下行:

host=InetAddress.getByAddress("mypc",new byte[]{192,168,1,110});
Run Code Online (Sandbox Code Playgroud)

但是当我使用上面的语句时,我得到了这个错误:"可能会损失精度"

所以我用这种方式将int转换为字节:

InetAddress.getByAddress("mypc",new byte[]{(byte)192,(byte)168,(byte)1,(byte)110});
Run Code Online (Sandbox Code Playgroud)

上述陈述现在会起作用吗?

Yuv*_*dam 14

如果您已将其包含在字符串中,只需使用getByName():

InetAddress host = InetAddress.getByName("192.168.1.110");
Run Code Online (Sandbox Code Playgroud)

使用字节是混乱的,并且可能很危险(由于Java中使用的签名字节).String如果可以,坚持使用s.


Aln*_*tak 6

将正整数文字转换为byte值是没有问题的,即使它们溢出也是如此.

InetAddress.getByAddress()功能完全适应超过127的值将转换为负数的事实.

您需要注意的唯一事情是将签名的字节转换回整数,如果您随后想要显示它们.这很好用:

byte b = (byte)192;
System.out.println(b); // outputs "-64"

int i = (b & 0xff);
System.out.println(i); // outputs "192"
Run Code Online (Sandbox Code Playgroud)