java byte&0xFF

做串口端口通讯时,数据都是以byte类型发送的

普通的byte范围是-128-127,而java的byte范围是0-255

因此将数据的byte转成java的byte时,需要与0xff(11111111)做一个&运算,将-128-127转换到java的0-255之间

也就是与 0xff 做 & 运算会将数据 byte 值变成 java的byte 类型的值,也将 -128~0 间的负值都转成正值了。

System.out.println("1的编码:"+Integer.toBinaryString(1));
//java中的负数是取补码+1
System.out.println("-1的编码:"+(Integer.toBinaryString(-1)));
System.out.println("0XFF的编码:"+Integer.toBinaryString(Integer.valueOf("FF",16)));
System.out.print("-1 & 0xFF:");
System.out.println(-1 & 0xFF);
System.out.print("1 & 0xFF:");
System.out.println(1 & 0xFF);

打印输出

1的编码:1
-1的编码:11111111111111111111111111111111
0XFF的编码:11111111
-1 & 0xFF:255
1 & 0xFF:1
时间: 2024-10-05 19:58:55

java byte&0xFF的相关文章

Java byte类型转换成int类型时需要 & 0XFF的原因

Java byte类型转换成int类型时需要 & 0XFF的原因 假设有byte b  = -1; 那么b的二进制是:1111 1111. 如果将b直接转换为int类型,那么二进制是 1111 1111 1111 1111 1111 1111 1111 1111,这显然就不对了. 所以要与b进行&运算 0XFF的二进制是 0000 0000 0000 0000 0000 0000 1111 1111 那么运算之后到结果就是 0000 0000 0000 0000 0000 0000 111

【转】java byte转long、double、float、int、short,或者long、double、float、int、short转byte

原文网址:http://www.xuebuyuan.com/988752.html java byte与其他数据类型的转换主要用于二进制数据的编码和解码,主要用于网络传输,读写二进制文件,java和c++服务器之间的数据通信等等 以下是总结的源码 /** * BYTE转INT * * @param b * @return */ protected int byteArrayToInt(byte[] b) { return (b[0] << 24) + ((b[1] & 0xFF) &l

java byte to hex

java  byte to hex 16 package com.longtop.client.codec.encryp; public class HexTransfer { /** * 将byte数组转换为表示16进制值的字符串, 如:byte[]{8,18}转换为:0813, 和public static byte[] * hexStr2ByteArr(String strIn) 互为可逆的转换过程 * * @param arrB * 需要转换的byte数组 * @return 转换后的字

Java byte 类型的取值范围是-128~127

为什么Java byte 类型的取值范围是-128-127 : http://blog.163.com/[email protected]/blog/static/47517863200911314245752/ java基本数据类型的取值范围: http://www.cnblogs.com/singlesoar/p/5688915.html

java byte【】数组与文件读写(增加新功能)

今天在测试直接写的文章: java byte[]数组与文件读写 时,想调用FileHelper类对字节数组以追加的方式写文件,结果无论怎样竟然数据录入不全,重新看了下文件的追加模式,提供了两种方式: 方式一: 字节数组写入文件(不追加) //将byte数组写入文件 public void createFile(String path, byte[] content) throws IOException { FileOutputStream fos = new FileOutputStream(

java byte 16进制转换

整型转16进制: int devIdInt = Integer.parseInt(devId); String devIdString = Integer.toHexString(devIdInt); 16进制转为字节: byte devBin = (byte) Integer.parseInt(devIdString, 16); byte devBin =Integer.valueOf(devIdString, 16).byteValue(); byte devBin =Byte.parseB

python3.4 UnicodeDecodeError: &#39;gbk&#39; codec can&#39;t decode byte 0xff in position

python3.4 UnicodeDecodeError: 'gbk' codec can't decode byte 0xff in position 实用python的时候 打开一个csv的文件出现一下错误. 然后百度了一下,找到了对应的解决方案 1 with open('History.csv','r',encoding='utf-8') as f: 在后面加上encoding=utf-8即可 python3.4 UnicodeDecodeError: 'gbk' codec can't

java byte转无符号int

import java.io.ByteArrayInputStream; public class Test{ public static void main(String[] args) { byte[] bytes = new byte[]{(byte)-42}; ByteArrayInputStream in = new ByteArrayInputStream(bytes); int result = in.read(); System.out.println("无符号数: \t&quo

TensorFlow学习笔记(UTF-8 问题解决 UnicodeDecodeError: &#39;utf-8&#39; codec can&#39;t decode byte 0xff in position 0: invalid start byte)

我使用VS2013  Python3.5  TensorFlow 1.3  的开发环境 UnicodeDecodeError: 'utf-8' codec can't decode byte 0xff in position 0: invalid start byte 在是使用Tensorflow读取图片文件的情况下,会出现这个报错 代码如下 # -*- coding: utf-8 -*- import tensorflow as tf import numpy as np import mat