首页
社区
课程
招聘
求一下 汇编 整型变量的问题
发表于: 2010-3-22 22:56 6461

求一下 汇编 整型变量的问题

2010-3-22 22:56
6461
求一下 汇编 整型变量的问题

程序是读取 数据库某个表 当时设计的是int的类型。

最近发现int的类型实在用的郁闷,想更改为unsigned long 类型

想问下怎么搞 附加程序

如字符里的

select id,name,x,y,hp,mp,exp,ap,level,metier,metierlevel,sp,str,con,dex,`int`,hit,actorid,faction,pk,items,deletedate,headmodelid from user where accountid='%d' and deleted=0 order by createdate

hit是int类型的  特想去搞成unsigned long型。不知道怎么改

希望能告诉我 是把那个改成什么啊 感谢

[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

上传的附件:
  • 2.rar (732.53kb,58次下载)
收藏
免费 0
支持
分享
最新回复 (29)
雪    币: 41
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
没人能给我点提示的吗  我改了好几天啦啊  特晕
2010-3-23 15:07
0
雪    币: 2513
活跃值: (545)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
3
这和你数据存储在数据库的组织形式有关吧
2010-3-23 16:33
0
雪    币: 41
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
哈哈 有是你啊。

数据库的格式已经改成其他类型的 只要大于32767这个值就变为负数的了啊
2010-3-23 17:13
0
雪    币: 249
活跃值: (25)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
5
你是什么数据库呀,应该有更长的数据类型吧~~以前做过一段时间的数据库,也不是特别了解,现在又很长时间不接触了。你自己在改完之后填入数值看看哪个类型可以存入更大的数值。不行就重建表(下策),
2010-3-23 17:29
0
雪    币: 285
活跃值: (16)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
6
如果你不用数据库里的脚本的话(触发器、存储过程), 数据库里可以不用变,读到客户端用DWORD(ULONG)型就可以了。
2010-3-23 17:33
0
雪    币: 41
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
主要是找不到啊 客户端本身是dword的格式 但是下线在上就负数了
2010-3-23 20:38
0
雪    币: 285
活跃值: (16)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
8
把负数赋值给DWORD后,就是正的了
2010-3-23 20:59
0
雪    币: 41
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
不太懂能否说的详细点
2010-3-23 21:52
0
雪    币: 401
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
不管是ULONG还是int,到了汇编里就全是DWORD,只是解释不同罢了,同样是0xFFFFFFFF,printf("%l",num)输出就是2^32-1,printf("%d",num)输出就是-1,自己处理一下应该就可以了,我刚才跟了一下printf函数,看的头晕脑胀。。。你可以自己看一下它是怎么处理的。
2010-3-23 22:32
0
雪    币: 41
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
11
真的不是很懂啊 能否给我分析下 在代码上写一下注释
2010-3-23 22:56
0
雪    币: 41
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
12
俄  大家帮忙分析下 如果是有算法 能直接跳过也行
2010-3-25 00:22
0
雪    币: 364
活跃值: (91)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
13
改数据库是非常困难的事,而LZ的问题应该只是改客户端程序 改下那个连接字符 select id,name,x,y,hp,mp,exp,ap,level,metier,metierlevel,sp,str,con,dex,`int`,hit,actorid,faction,pk,items,deletedate,headmodelid from user where accountid='%d' and deleted=0 order by createdate   

int 改成 unsigned long 而后边的字符要往后移动。hit,actorid,faction,pk,items,deletedate,headmodelid from user where accountid='%d' and deleted=0 order by createdate   要往后移动。

后移后 程序中这个连接字符占用的空间就会越界。
2010-3-25 09:45
0
雪    币: 41
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
14
int`, 这个是表名 不是类型啊
2010-3-25 11:32
0
雪    币: 2067
活跃值: (82)
能力值: ( LV9,RANK:180 )
在线值:
发帖
回帖
粉丝
15
膜拜1234
2010-3-25 11:42
0
雪    币: 401
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
16
S大大就会笑话我。。。为什么不把下一句加上。。。重装VS,上次装的时候居然没选中crt源码。。。狂汗。。
2010-3-25 11:51
0
雪    币: 41
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
17
xiilin 能否详细说明下啊  让新手学习下啊
2010-3-25 14:44
0
雪    币: 41
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
18
xiilin 最好能把那些代码 解释一下 让我们新手也学习下 好不好啊
2010-3-25 14:47
0
雪    币: 401
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
19
我也解释不通啊,自己去看吧,在vc7/crt/src/output.c文件里,看output函数是怎么处理的。
或者自己写一个C程序,跟踪一下呗:

#include <stdio.h>
#include <windows.h>

int main(int argc,char *argv[])
{
        DWORD val = 0xFFFFFFFF;
        printf("ULONG value is %u.\n",val);
        printf("integer value is %d.\n",val);
        return 0;
}

跟一下printf就是了。
2010-3-25 15:33
0
雪    币: 41
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
20
奥啦 还是谢谢你啊
2010-3-25 15:40
0
雪    币: 41
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
21
还是没找出来 继续求
2010-3-27 23:48
0
雪    币: 41
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
22
是不是把输出类型word改成dword就行啦啊?
2010-3-29 00:25
0
雪    币: 285
活跃值: (16)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
23
WORD是2字节,DWORD是4字节,这样改会有问题。
另外,我也反汇编过printf函数,基本上看懂了, 不知道xiilin哪不懂
2010-3-29 09:01
0
雪    币: 41
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
24
能否详细说明下 如何去修改啊  因为这种问题很多啊 我想学会了他
2010-3-29 11:01
0
雪    币: 401
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
25
这几天一直没上网,呵呵。只是觉得很麻烦,到处都有宏,va_start之类的,一看到宏我就去考虑这个宏的实现去了,所以偏离了预期的目标
2010-3-29 14:31
0
游客
登录 | 注册 方可回帖
返回
//