【发布时间】:2022-06-23 17:17:47
【问题描述】:
是否可以将整数除以 n 位?
例如,由于int 变量的大小为 32 位(4 字节),是否可以将数字分成 4 个 8 位“片段”并将它们放入 4 个大小为 8 的其他变量中位?
编辑: 我解决了使用 unsigned char *pointer 指向我要分析字节的变量,如下所示:
int x = 10;
unsigned char *p = (unsigned char *) &x;
//Since my cpu is little endian I'll print bytes from the end
for(int i = sizeof(int) - 1; i >= 0; i--)
//print hexadecimal bytes
printf("%.2x ", p[i]);
【问题讨论】:
-
如果您问如何将
int拆分为n 个字节,将会有很多骗子。请注意,尽管在 C 中int的大小没有明确定义。至于位操作本身,也许您需要查找“掩码”之类的内容,并遵循一些关于整数位操作的教程。 -
@MaartenBodewes 或者回答他的问题
-
@Fredrik 不,这不是这个问答网站的工作方式。我很高兴朝着正确的方向前进,但这个问题显然已经回答过很多次了,通过查看诸如
<<、&和^等运算符在一个很好的教程中对提问者的帮助更大. -
@Fredrik 尝试了一个解释性答案,但它仍然指向其他问题和 C 书籍。
-
请添加解决方案作为答案并接受相同的答案,而不是编辑到问题中