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);
    }
}

可以展现出如下结果:

相关推荐
昊坤说不出的梦几秒前
【实战】监控上下文切换及其优化方案
java·后端
冠希陈、5 分钟前
PHP 判断是否是移动端,更新鸿蒙系统
android·开发语言·php
HDO清风25 分钟前
CASIA-HWDB2.x 数据集DGRL文件解析(python)
开发语言·人工智能·pytorch·python·目标检测·计算机视觉·restful
2201_7569890926 分钟前
C++中的事件驱动编程
开发语言·c++·算法
多米Domi01137 分钟前
0x3f 第48天 面向实习的八股背诵第五天 + 堆一题 背了JUC的题,java.util.Concurrency
开发语言·数据结构·python·算法·leetcode·面试
2301_8223776537 分钟前
模板元编程调试方法
开发语言·c++·算法
csbysj202041 分钟前
Python 循环嵌套
开发语言
测试_AI_一辰43 分钟前
Agent & RAG 测试工程05:把 RAG 的检索过程跑清楚:chunk 是什么、怎么来的、怎么被命中的
开发语言·人工智能·功能测试·自动化·ai编程
Coding茶水间1 小时前
基于深度学习的输电电力设备检测系统演示与介绍(YOLOv12/v11/v8/v5模型+Pyqt5界面+训练代码+数据集)
开发语言·人工智能·深度学习·yolo·目标检测·机器学习
清风~徐~来1 小时前
【视频点播系统】BRpc 介绍及使用
开发语言