Java 字节类型很奇怪

Java 字节类型很奇怪,java,android,Java,Android,我需要通过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) 0

我需要通过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};
据我所知,0xFF没有超出字节类型,那么问题是什么

事实上是的。字节是用Java签名的,因此范围是-0x80到0x7f(包括)


(事实上,
字节
类型是有符号的,这是一个让人头疼的问题,但是我们开始了…

java中的任何文字数字都被编译为int。即使在这里这样的情况下声明,其中一个字节是期望值。强制转换实际上是将文本int转换成字节。

看看我的强制转换是否有效?还是我需要定义到另一个数据type@opc0de:是的,强制转换非常好。除了在
byte
范围内有一个常量
int
表达式到
byte
本身的隐式转换。问题是
0xff
不在
byte
的范围内。用(比如)0x7f
试试,你就不需要演员阵容了。