zoukankan      html  css  js  c++  java
  • [Windows] [VS] [C] [取得指针所指内存的十六进制形式字符串]

    接口定义如下:

    1 #include <Windows.h>
    2 
    3 // 取得指针所指内存的十六进制形式字符串,size指定字节长度
    4 #define Mem_toString(address, size) _Mem_toString((PBYTE)address, size)
    5 
    6 // 取得指针所指内存的十六进制形式字符串,size指定字节长度
    7 PSTR _Mem_toString(PBYTE address, size_t size);
    Mem_toString.h

    实现如下:

     1 #include "MemUtil.h"
     2 #include <stdlib.h>
     3 #include <stdio.h>
     4 
     5 PSTR _Mem_toString(PBYTE address, size_t size ){
     6     PSTR $pstr = NULL;
     7     int $i = 0;
     8     int $length = sizeof(char)* size* 3; // 返回的字符串所需堆内存的长度 解释一个字节需要3个字符(包含一个空格,最后一个空格用作结尾符'')
     9 
    10     if(address== NULL || size== 0 || size> 1024 ) return NULL; // 此处限制size大小1024
    11 
    12     $pstr = (PSTR) malloc($length); 
    13     for(; $i< size; $i++ ){
    14         char tmp[3] = { 0 }; // 3个字符缓冲
    15         sprintf(tmp, "%X", *address++);
    16         tmp[1]== ''?
    17             sprintf(&$pstr[$i*3], "0%s ", tmp ): // 补零对齐
    18             sprintf(&$pstr[$i*3], "%s ", tmp );
    19     }
    20     $pstr[$length-1] = '';
    21     return $pstr;
    22 }
    _Mem_toString.c

    我们来测试一下:

     

    输出:

  • 相关阅读:
    第五周反向传播算法
    PHP数组排序
    <meta-data>
    Android之Intent
    Fragment生命周期
    前端后台学习笔记汇杂
    IntelliJ IDEA 14.x 与 Tomcat 集成,创建并运行Java Web项目
    用java将excel中数据导入mysql
    幸运观众抽奖
    JTextField
  • 原文地址:https://www.cnblogs.com/develon/p/7834495.html
Copyright © 2011-2022 走看看