You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Java中char类型占2字节,如何从char变量获取原始字节?

Java中从char变量提取原始字节的方法

Java里的char是16位无符号UTF-16编码字符,对应2个字节。要提取它的原始字节,有两种常用方式:


方法一:位运算直接提取

利用位操作直接分离高8位和低8位,这种方式高效且无需额外依赖:

var ch = '文';
// 获取高字节(大端模式,符合UTF-16默认字节序)
var b1 = (byte) ((ch >> 8) & 0xFF);
// 获取低字节
var b2 = (byte) (ch & 0xFF);

说明:

  • ch >> 8:将char的16位值右移8位,得到高8位的数值
  • & 0xFF:确保只保留低8位(避免int类型的符号扩展问题)
  • 强制转成byte得到最终的单字节值

方法二:使用ByteBuffer(灵活处理字节序)

如果需要明确指定字节序(大端/小端),可以用ByteBuffer来实现:

import java.nio.ByteBuffer;
import java.nio.ByteOrder;

var ch = '文';
// 分配2字节的缓冲区
ByteBuffer buffer = ByteBuffer.allocate(2);
// 指定字节序,可选BIG_ENDIAN(默认)或LITTLE_ENDIAN
buffer.order(ByteOrder.BIG_ENDIAN);
// 将char写入缓冲区
buffer.putChar(ch);
// 提取字节数组
byte[] bytes = buffer.array();
var b1 = bytes[0];
var b2 = bytes[1];

说明:

  • 默认字节序是大端(BIG_ENDIAN),和Java内部char的存储一致
  • 如果需要小端字节序,只需把ByteOrder.BIG_ENDIAN换成ByteOrder.LITTLE_ENDIAN

内容的提问来源于stack exchange,提问作者R A

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.01 16:12:45