字节类型很奇怪

时间:2012-06-28 06:36:23

标签: 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) 0xFF,(byte) 0xFF};

2 个答案:

答案 0 :(得分:11)

  

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

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

byte类型 签名的事实是痛苦的,但我们去......)

答案 1 :(得分:1)

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