杰瑞科技汇

Java byte 转 byte 有哪些常见方式?

在 Java 中,byte 是基本数据类型,表示一个 8 位有符号整数(范围:-128 到 127),如果你指的是将其他类型转换为 byte,或者处理 Byte 对象(byte 的包装类),以下是常见场景和转换方法:

Java byte 转 有哪些常见方式?-图1
(图片来源网络,侵删)

其他基本类型转 byte

使用强制类型转换(注意会截断高位,可能导致数据丢失):

int intValue = 130;
byte byteValue = (byte) intValue; // 结果为 -130(溢出)

注意事项:

  • 如果原始值超出 byte 范围(-128~127),会溢出并回绕。
  • 浮点数转 byte 会直接截断小数部分(如 (byte) 12.9f 结果为 12)。

Byte 对象转 byte

Bytebyte 的包装类,通过 byteValue() 方法拆箱:

Byte byteObj = 10;
byte primitiveByte = byteObj.byteValue(); // 结果为 10

字节数组(byte[])转单个 byte

通过索引访问:

byte[] byteArray = {1, 2, 3};
byte singleByte = byteArray[0]; // 结果为 1

字符串(String)转 byte

方法 1:直接解析数字字符串

String str = "50";
byte b = Byte.parseByte(str); // 结果为 50
  • 如果字符串格式不正确(如非数字),会抛出 NumberFormatException

方法 2:按字符编码转换

String str = "A";
byte b = (byte) str.charAt(0); // 结果为 65(ASCII 码)

十六进制字符串转 byte

例如将 "1A" 转为 byte

Java byte 转 有哪些常见方式?-图2
(图片来源网络,侵删)
String hexStr = "1A";
byte b = (byte) Integer.parseInt(hexStr, 16); // 结果为 26

位操作相关转换

获取某一位的值(0或1)

byte b = 5; // 二进制: 00000101
int bit0 = (b >> 0) & 0x1; // 第0位: 1
int bit2 = (b >> 2) & 0x1; // 第2位: 1

设置某一位的值

byte b = 0; // 初始为 0
b = (byte) (b | (1 << 3)); // 设置第3位为1(结果为 8)

常见问题:

Q: 为什么 (byte) 129 结果是 -127

  • 129 的二进制是 10000001,作为 byte(8位)时最高位是符号位,因此表示 -127(补码形式)。

Q: 如何避免溢出?

  • 检查范围后再转换:
    int value = 200;
    if (value >= Byte.MIN_VALUE && value <= Byte.MAX_VALUE) {
        byte b = (byte) value;
    }

场景 方法示例
基本类型转 byte (byte) 130
Byte 对象转 byte byteObj.byteValue()
字符串转 byte Byte.parseByte("50")
十六进制转 byte (byte) Integer.parseInt("1A", 16)

根据你的具体需求选择合适的方法!

Java byte 转 有哪些常见方式?-图3
(图片来源网络,侵删)
分享:
扫描分享到社交APP
上一篇
下一篇