• 以16进制打印出一块内存buff


    如下代码(支持windows与Linux)会以【16进制】【每行16字节】打印出一块内存的内容:

    void PrintBuffer(void* pBuff, unsigned int nLen)
    {
        if (NULL == pBuff || 0 == nLen)
        {
            return;
        }
    
        const int nBytePerLine = 16;
        unsigned char* p = (unsigned char*)pBuff;
        char szHex[3*nBytePerLine+1] = {0};
    
        printf("-----------------begin-------------------
    ");
        for (unsigned int i=0; i<nLen; ++i)
        {
            int idx = 3 * (i % nBytePerLine);
            if (0 == idx)
            {
                memset(szHex, 0, sizeof(szHex));
            }
    #ifdef WIN32
            sprintf_s(&szHex[idx], 4, "%02x ", p[i]);// buff长度要多传入1个字节
    #else
            snprintf(&szHex[idx], 4, "%02x ", p[i]); // buff长度要多传入1个字节
    #endif
            
            // 以16个字节为一行,进行打印
            if (0 == ((i+1) % nBytePerLine))
            {
                printf("%s
    ", szHex);
            }
        }
    
        // 打印最后一行未满16个字节的内容
        if (0 != (nLen % nBytePerLine))
        {
            printf("%s
    ", szHex);
        }
    
        printf("------------------end-------------------
    ");
    }

    打印出来的结果如下:

  • 相关阅读:
    算法初探
    OIer数学相关
    算法初探
    MySQL事务
    MySQL多表查询
    数据库的设计
    winform选择文件夹
    获取上次打开目录
    C#拆分中文和数字字符串
    uCharts如何设置双Y轴,左侧一个右侧一个,数据源与对应的Y轴绑定
  • 原文地址:https://www.cnblogs.com/kekec/p/3816983.html
Copyright © 2020-2023  润新知