ByteBuffer调试工具类

一个可以形象展示ByteBuffer内容的方法,便于调试

java 复制代码
package com.example.netty;

import java.nio.ByteBuffer;

public class ByteBufferUtil {

    /**
     * 打印ByteBuffer的内容,以十六进制和ASCII字符的形式展示。
     *
     * @param buffer 要展示的ByteBuffer
     */
    public static void debugByteBuffer(ByteBuffer buffer) {
        // 重置buffer的位置,以便从头开始读取
        buffer.rewind();

        // 用于存储十六进制字符串
        StringBuilder hexDump = new StringBuilder();
        // 用于存储ASCII字符
        StringBuilder asciiDump = new StringBuilder();

        // 一次读取一个字节
        while (buffer.hasRemaining()) {
            int byteValue = buffer.get() & 0xFF; // 确保是正数
            // 添加到十六进制字符串
            hexDump.append(String.format("%02X ", byteValue));

            // 添加到ASCII字符串,如果是不可打印的字符,则显示为点
            char ch = (char) byteValue;
            asciiDump.append((ch >= 32 && ch <= 126) ? ch : '.');

            // 每行16个字节
            if (buffer.position() % 16 == 0) {
                hexDump.append("   ").append(asciiDump);
                hexDump.append(System.lineSeparator());
                asciiDump.setLength(0); // 清空ASCII字符串
            }
        }

        // 如果最后一行不足16个字节,也打印出来
        if (asciiDump.length() > 0) {
            // 补足空格,保持对齐
            while (hexDump.length() < 48) {
                hexDump.append("   ");
            }
            hexDump.append(asciiDump);
        }

        // 打印结果
        System.out.println(hexDump.toString());
    }

    public static void main(String[] args) {
        // 示例:创建一个ByteBuffer并填充一些数据
        ByteBuffer buffer = ByteBuffer.allocate(64);
        for (int i = 0; i < buffer.capacity(); i++) {
            buffer.put((byte) i);
        }

        // 展示ByteBuffer内容
        debugByteBuffer(buffer);
    }
}

可以展现出如下结果:

相关推荐
特立独行的猫a32 分钟前
Windows安装Rust环境 Clang替代GCC MinGW环境LLVM工具链(详细教程)
开发语言·windows·rust·mingw·环境搭建·llvm
程序员黑豆5 小时前
Java字符串详解
java·前端·ai编程
m0_720245016 小时前
1543.统计好三元组(简单)
开发语言·算法
EntyIU7 小时前
NFS离线部署
java
叠层归一研究院8 小时前
AGI 系统(八):符号范畴嵌入函子 — SymCat ↪ C_M107 严格化
c语言·开发语言·人工智能·算法·transformer·agi
明朝百晓生8 小时前
Deep RL learning[2026/8]
开发语言·javascript·人工智能
weixin-a153003083169 小时前
python-装饰器
开发语言·python
我的xiaodoujiao9 小时前
快速学习Python基础知识详细图文教程17--类型注解和断点调试
开发语言·python·学习·测试工具
OH_TPC10 小时前
HarmonyOS APP开发---“滤镜大师“图像处理App,需要用到这个库
java·图像处理·华为·harmonyos·鸿蒙
leoZ23111 小时前
AI 辅助开发的五道坎
开发语言·人工智能·视觉检测·bert·php·超分辨率重建·openvino