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

如何在Java中合并%02X与%45s格式化,实现十六进制带长度限制输出?

解决方案

要同时实现两位十六进制格式化输出和每行45字符长度限制,没法直接用单一printf格式串完成(换行需要依赖输出计数),但可以把格式控制和换行逻辑整合到同一个循环的printf调用里,核心是跟踪已输出的字符数,达到阈值时自动换行。

代码实现

int byteCount = 0;
int currentByte;
while ((currentByte = file.read()) != -1) {
    // 输出两位十六进制,同时判断是否需要换行
    System.out.printf("%02X%s", currentByte, ++byteCount % 22 == 0 ? "\n" : "");
}
// 处理最后一行未完成的换行
if (byteCount % 22 != 0) {
    System.out.println();
}

逻辑说明

  • %02X负责将每个字节格式化为两位十六进制(不足两位补0),每个输出占2个字符。
  • 由于每行限制45字符,22个十六进制值刚好占44字符(不超过限制),第23个会达到46字符,因此每输出22个字节就触发换行。
  • 用++byteCount % 22 == 0判断是否达到换行条件,将换行符作为第二个参数传入printf,实现格式和换行的统一调用。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 21:01:06