可以使用std.format库中的format函数和toHexString函数来实现:

import std.format;

void main()
{
    int i = 1;
    auto bytes = cast(ubyte[])(&i); // 获取i的内存地址,并将其强制转换为unsigned byte数组
    auto str = format("%02X %02X %02X %02X", bytes[0], bytes[1], bytes[2], bytes[3]); // 将每个byte格式化为2位16进制数,并用空格隔开
    writeln(str);
}

输出结果为:

01 00 00 00

其中,%02X表示将一个byte格式化为2位16进制数,不足两位时在前面补0。cast(ubyte[])(&i)用于将指向i的指针转换为unsigned byte数组,这样就可以直接访问i在内存中的二进制表示形式了。

d语言怎么将一个变量或者字面量在内存中的二进制表示形式以字符串打印出来比如 int i=1在内存中占有4个字节那么就打印00000000 00000000 00000000 00000001

原文地址: https://www.cveoy.top/t/topic/gEGH 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录