请教一个关于数据存取问题

2012-12-18 03:46:25
ULONG a = 1;
ULONG *p = &a;

调试以上2条语句,VC6.0 memory下,
*p = 0x0012fa48
0012FA48 01 00 00 00 <- 4字节

如果将a=1改为a=64;
0012FA48 40 00 00 00 <- 4字节

想问的是 如果同样是从内存里获取4字节如何转成10进制数 ,
我是打算后往前取 先组成 CString 例: 00000040 <- 在转成 10进制 64
可是听朋友说 x86 和 ppc的存储机制不一样 可能会出现 00 00 00 01 这么存,如果按我的思路去取的话就会出现错误,获取不到正确的数字。

请问我该使用什么办法能获取到正确的4字节数据?
...全文
99 8 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
yaozhiyong110 2012-12-18
  • 打赏
  • 举报
回复
你意思是一个程序 存a系统一个数据 然后在b系统了取?
2012-12-18
  • 打赏
  • 举报
回复
谢谢各位热心的朋友啦。
2012-12-18
  • 打赏
  • 举报
回复
没事了,解决了。。。
2012-12-18
  • 打赏
  • 举报
回复
貌似我的表诉有点问题, 比如 已知 unsigned char *p = new unsigned char[4]; *p[0] = 0x40; *p[1] = 0x00; *p[2] = 0x00; *p[3] = 0x00; 因为这4字节构成一个unsigned long类型的数值 我前面说的 由于 架构不同 所以会造成 40 00 00 00 or 00 00 00 40 的存储 我该如何将这4字节转成ulong数. 这样解释应该清楚了吧。。。
看不见的裂痕 2012-12-18
  • 打赏
  • 举报
回复
判断大小端么?

#include <cstdio>
 
int checkSystem()
{
    char s[]="1000";
    return (s[0]=='1');
}
 
int main()
{
    checkSystem()==1 ? printf("Little-endian\n") : printf("Big-endian\n");
    return 0;
}
2012-12-18
  • 打赏
  • 举报
回复
不是呀,楼上没白我的意思, 如果同样是从内存里获取4字节如何转成10进制数 , 意思就是 内存里有 4个字节 比如 40 00 00 00 取出来后就是 64 <- 我前面帖子说了,由于架构不同 可能造成存储不同,按我说的方法去取的话,会有问题。所以来求教该如何取
yaozhiyong110 2012-12-18
  • 打赏
  • 举报
回复
ULONG a = 64; ULONG *p = &a; 现在你取p的值 *p不就是64? 还要怎么弄?
yaozhiyong110 2012-12-18
  • 打赏
  • 举报
回复
*p 不是就等于1吗? 调试只是你看的是16进制而已 取出来的值你想用几进制显示就几进制显示

2,644

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 硬件/系统
社区管理员
  • 硬件/系统社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧