D语言打印变量或字面量内存二进制表示
可以使用 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 在内存中的二进制表示形式了。
原文地址: https://www.cveoy.top/t/topic/oxef 著作权归作者所有。请勿转载和采集!