htole32()glibc函数混淆

htole32()glibc函数混淆,c,C,我想创建以下等效项: char* val = "\x11\x11\x11\x11"; 使用htole32()函数。既然“\x11”是不可打印的字符,我该如何执行此操作 编辑 我将把int转换为char*,我不想收到分段冲突,如果我使用: int val = 0x11111111; 我并不完全清楚最终目标,但您可以指定十六进制格式的整数: uint32_t val = 0x11111111; 如注释中所述,可以使用%x(或%x)作为格式说明符,使用printf函数系列打印十六进

我想创建以下等效项:

   char* val = "\x11\x11\x11\x11";
使用htole32()函数。既然“\x11”是不可打印的字符,我该如何执行此操作

编辑

我将把int转换为char*,我不想收到分段冲突,如果我使用:

    int val = 0x11111111;

我并不完全清楚最终目标,但您可以指定十六进制格式的整数:

uint32_t val = 0x11111111;
如注释中所述,可以使用
%x
(或
%x
)作为格式说明符,使用
printf
函数系列打印十六进制表示。从我从OP中收集到的信息来看,这可能是你想要的,但我不能完全确定


编辑以响应OP编辑:还不完全清楚强制转换到
char*
是什么意思。如果您的意思是想将
val
的地址强制转换为char*(例如,
char*ptr=(char*)&val;
),那么这应该可以正常工作,并允许您访问各个字节。

我更喜欢使用htole32(),因为它在我编写的循环中使用。该函数接受(并返回)uint32\t。。。所以我不太确定你想要什么。您可以获取整数的地址,也可以访问单个字节(如果需要,可以使用char*)。这本身不会导致访问冲突或分段错误。我希望将地址0x1111111存储在内存中的字符串中,并能够将其打印出来(出于比较原因)。您不能将字节打印为十六进制吗?您只需为要打印的内容创建一个无符号字符*,然后执行printf(“0x%02X”,foo[0]);(你也可以打印foo[1]等等,这取决于你想查看的字节数)在python中,我可以使用字符串+=pack(“字符没有对齐。当你走另一条路时,问题就会出现。可打印字符和不可打印字符有什么关系?”?