3

我需要通过 UDP 协议发送一些字节,起始序列是 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF

当我这样定义时:

byte [] begin = {0xFF,0xFF,0xFF,0xFF,0xFF,0xFF}; 

我收到一条错误消息,说我需要将它们转换为字节类型。据我所知,0xFF 没有超出字节类型,那么问题是什么?

如果我写这个它可以工作:

byte [] begin = {(byte) 0xFF,(byte) 0xFF,(byte) 0xFF,(byte) 0xFF,(byte) 0xFF,(byte) 0xFF};
4

2 回答 2

11

据我所知,0xFF 没有超出字节类型,那么问题是什么?

实际上确实如此。字节是用 Java 签名的,所以范围是 -0x80 到 0x7f(含)。

byte(类型签名的事实令人头疼,但我们走了......)

于 2012-06-28T06:38:17.470 回答
1

java中的任何文字数字都编译为int。即使它是在像这里这样的情况下声明的,其中一个字节是预期值。演员表实际上是将文字 int 转换为字节的东西。

于 2012-06-28T07:03:54.893 回答