gpt4 book ai didi

c++ - 使用指针分隔整数的数字

转载 作者:太空宇宙 更新时间:2023-11-03 10:43:14 25 4
gpt4 key购买 nike

我有一个 integer(i) 占用 4 个字节,我假设它像这样存储在内存中,起始地址为 1000,

enter image description here

如果我写 int*p=&i;

p 现在在这里存储起始地址 1000。

如果我增加 p 它指向地址 1004。

有什么方法可以遍历地址 1000、1001、1002 和 1003,以便我可以使用指针分离和打印数字 1 、5、2、6?请帮忙..... :((新手)

我对存储的假设可能有误 谁能帮我改正一下? :(

编辑 1

根据下面Mohit Jain的回答和其他人的建议,

unsigned char *cp = reinterpret_cast<unsigned char *>(&i);
for(size_t idx = 0; idx < sizeof i; ++idx) {
cout << static_cast<int>(cp[idx]);
}

我得到的答案是246 5 0 0 .

我意识到我假设内存结构的方式是错误的,那么有没有办法使用指针获取实际数字??

最佳答案

值为 1526int 通常不会存储为值为 1 的四个字节, 526

相反,它将以二进制形式存储。假设一台小端机器,字节将具有以下值:0、0、5、246(如果它是大端机器,您将以相反的顺序获得相同的值)。这些数字的原因是它可以在每个字节中存储从 0 到 255 的值。因此,它存储为 5 * 256 + 246。当像这样处理内存中的值时,使用十六进制而不是十进制通常很方便(而且很常见),在这种情况下,您会将其视为 0x05F6。

获取十进制数字的常用方法涉及的数学比指针更多。例如,最低有效位将是该值除以 10 后的余数。

关于c++ - 使用指针分隔整数的数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29643378/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com