java的加符号_用Java将两个字节转换为带符号整数

简言之

有没有办法把两个字节读作有符号整数?

详细信息和示例

在Java中给出两个字节,每个字节表示一个整数,我们可以简单地将它们转换为它们一起表示的int值:

byte[] byteArray = new byte[4];

byteArray[0] = 0x00;

byteArray[1] = 0x00;

byteArray[2] = .. //a byte representing an integer

byteArray[3] = .. //a byte representing an integer

int i = ((byteArray[2] & 0xff) << 8) | (byteArray[3] & 0xff);

当两位代表正整数时,它工作得很好。但是当两个整数为负时,它失败了。

例如,当:

byteArray[2] = 0xff; // -1

byteArray[3] = 0xf9; // -7

我得到:

i = 65529;

这是不正确的。应该是-8,即0xf8。

我试着用bytebuffer:

byte[] array = new byte[4];

array[0] = 0x00;

array[1] = 0x00;

array[2] = 0xff;

array[3] = 0xf9;

ByteBuffer buffer = ByteBuffer.wrap(array);

int i = buffer.getInt();

不起作用。得到同样的结果:

i = 65529

这些只是例子。将有更多字节,它们将表示正整数和负整数。

有没有办法将两个字节作为有符号整数读取并得到正确的结果?

提前谢谢。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
.版本 2 .程序集 HTTP读文件程序集 .程序集变量 程序集_完整网址, 文本型 .程序集变量 程序集_访问方式, 文本型, , , "GET" or "POST",为空默认"GET" .程序集变量 程序集_代理地址, 文本型 .程序集变量 程序集_附协议头, 文本型 .程序集变量 程序集_页面内容, 字节集 .程序集变量 程序集_线程号, 整数型 .程序集变量 程序集_提交信息, 文本型, , , "POST"专用 .子程序 HTTP读文件字集, 字节集, , 有可能线程阻塞,请在外部超时判断 .参数 参数_完整网址, 文本型 .参数 参数_访问方式, 文本型, 可空, "GET" or "POST",为空默认"GET" .参数 参数_代理地址, 文本型, 可空 .参数 参数_附协议头, 文本型, 可空 .参数 参数_提交信息, 文本型, 可空, "POST"专用 .参数 参数_超时值, 整数型, 可空 .局部变量 开始时间, 整数型 程序集_完整网址 = 参数_完整网址 程序集_访问方式 = 参数_访问方式 程序集_代理地址 = 参数_代理地址 程序集_附协议头 = 参数_附协议头 程序集_提交信息 = 参数_提交信息 程序集_页面内容 = 取空白字节集 (0) .如果真 (是否为空 (参数_超时值) 或 参数_超时值 = 0) 参数_超时值 = 8 .如果真结束 开始时间 = 取启动时间 () 程序集_线程号 = 创建线程 (0, 0, &子程序_读网页, 0, 0, 程序集_线程号) .判断循环首 (程序集_线程号 > 0) 处理事件 () .如果真 (取启动时间 () - 开始时间 > 参数_超时值 × 1000) 销毁线程 (程序集_线程号, 0) 处理事件 () 程序集_页面内容 = 取空白字节集 (0) 程序集_线程号 = 0 .如果真结束 .判断循环尾 () 返回 (程序集_页面内容) .子程序 子程序_读网页 .局部变量 局部_Internet句柄, 整数型 .局部变量 局部_Internet连接句柄, 整数型 .局部变量 局部_HTTP请求句柄, 整数型 .局部变量 局部_域名, 文本型 .局部变量 局部_页面地址, 文本型 .局部变量 局部_整数变量1, 整数型 .局部变量 局部_整数变量2, 整数型 .局部变量 局部_逻辑变量, 逻辑型 .局部变量 局部_文本变量, 文本型 .局部变量 局部_字节集变量, 字节集 局部_域名 = 子程序_取域名 (程序集_完整网址) 局部_页面地址 = 子程序_取页面地址 (程序集_完整网址) ' 建立基础连接 .如果 (删全部空 (程序集_代理地址) = “”) 局部_Internet句柄 = Internet激活 (到文本 (“Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)”), 1, “”, “”, 0) .否则 局部_Internet句柄 = Internet激活 (到文本 (“Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)”), 3, 程序集_代理地址, “”, 0) 输出调试文本 (到文本 (“Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)”), 3, 到文本 (程序集_代理地址)) .如果结束 .如果真 (局部_Internet句柄 = 0) 程序集_页面内容 = 取空白字节集 (0) 返回 () .如果真结束 局部_Internet连接句柄 = Internet建立连接 (局部_Internet句柄, 局部_域名, 子程序_取端口 (程序集_完整网址), “”, “”, 3, 0, 0) .如果真 (局部_Internet连接句柄 = 0) 程序集_页面内容 = 取空白字节集 (0) 返回 () .如果真结束 局部_HTTP请求句柄 = Http创建请求 (局部_Internet连接句柄, 程序集_访问方式, 到文本 (局部_页面地址), “HTTP/1.1”, 到文本 (“”), 到文本 (“”), 2147483648, 0) .如果真 (局部_HTTP请求句柄 = 0) 程序集_页面内容 = 取空白字节集 (0) 返回 () .如果真结束 ' 补充协议头 .如果真 (寻找文本 (程序集_附协议头, “Accept: ”, 1, 真) = -1) 程序集_附协议头 = 程序集_附协议头 + “Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/x-sh

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值