如何给字节数组赋值

4
byte abc[]="204.29.207.217";

这里出现了错误,请告诉我正确的方法。


3个回答

27

如果你想分配硬编码的值,可以使用:

byte[] bytes = { (byte) 204, 29, (byte) 207, (byte) 217 };

注意强制类型转换,因为Java字节是有符号的 - 在这里进行强制类型转换会将溢出强制转换为负值,这可能是您想要的。

如果您实际上要解析字符串,则需要这样做 - 将字符串拆分为几个部分并依次解析每个部分。

如果你想将一个字符串转换为其某种特定编码下的二进制表示,你应该使用 String.getBytes,例如:

byte[] abc = "204.29.207.217".getBytes("UTF-8");

(请注意,按照惯例,[]应作为变量类型的一部分而不是在变量名称之后放置。虽然后者是允许的,但从风格上讲是不鼓励的。)


(byte) 128 会转换为 -1 吗?我一直很困惑。我知道在C++中它能够工作(除非我们使用 char 而不是 byte ),但我不确定Java是否也是如此。 - Martijn Courteaux
1
@Martijn:不对,(byte) 128的结果是-128。(byte) 255的结果是-1。 - Jon Skeet
1
@Martijn byte 是 Java 中的 8 位有符号整数,其范围从 -128 到 +127。它以二进制补码格式存储。 - Jesper
哦,确实!我是指确实是 (byte) 255。谢谢。 - Martijn Courteaux

3

这是一个字符串字面量。如果您想获得该字符串的二进制表示,可以使用其中一个String.getBytes方法。


2

使用char[]或String。确保获取String的包含文件。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接