首页
社区
课程
招聘
[旧帖] [求助]看OD入门教程的一个问题 0.00雪花
发表于: 2009-1-30 14:06 5407

[旧帖] [求助]看OD入门教程的一个问题 0.00雪花

2009-1-30 14:06
5407
我现在学“OD入门教程”,里面有句话:

我们要在程序中建一个标准9号宋体的 LOGFONT,以便于我们调用。对于 LOGFONT,我们再来看一下定义:

typedef struct tagLOGFONT { // lf

LONG lfHeight;

LONG lfWidth;

LONG lfEscapement;

LONG lfOrientation;

LONG lfWeight;

BYTE lfItalic;

BYTE lfUnderline;

BYTE lfStrikeOut;

BYTE lfCharSet;

BYTE lfOutPrecision;

BYTE lfClipPrecision;

BYTE lfQuality;

BYTE lfPitchAndFamily;

TCHAR lfFaceName[LF_FACESIZE];

} LOGFONT;

这样我们的标准9号宋体的 LOGFONT 值应该是32字节,16进制就像这样:F4FFFFFF000000000000000000000000900100000000008600000000CBCECCE5。

请问这个“F4FFFFFF000000000000000000000000900100000000008600000000CBCECCE5”是怎么算出来的?

请教请教,谢谢先!

[课程]Linux pwn 探索篇!

收藏
免费 1
支持
分享
最新回复 (14)
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
看看
2009-1-30 21:25
0
雪    币: 40
活跃值: (18)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
继续请教,谢谢先
2009-2-1 08:44
0
雪    币: 2384
活跃值: (766)
能力值: (RANK:410 )
在线值:
发帖
回帖
粉丝
4
当然是根据下面的结构计算出来的。
typedef struct tagLOGFONT { // lf
LONG lfHeight; = F4FFFFFF
LONG lfWidth; = 00000000
LONG lfEscapement; = 00000000
LONG lfOrientation; = 00000000
LONG lfWeight; = 90010000
BYTE lfItalic; = 00
BYTE lfUnderline; = 00
BYTE lfStrikeOut; = 00
BYTE lfCharSet; = 86
BYTE lfOutPrecision; = 00
BYTE lfClipPrecision; = 00
BYTE lfQuality; = 00
BYTE lfPitchAndFamily; = 00
TCHAR lfFaceName[LF_FACESIZE]; = CBCECCE5 '= 宋体'
} LOGFONT;
2009-2-1 09:27
0
雪    币: 40
活跃值: (18)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
谢谢老大!
那就是说long是4个字节(5个long就是20个字节了),byte是一个字节(8个type就是8个字节了),那就是TCHAR是4个字节了,对吧
2009-2-1 09:44
0
雪    币: 2384
活跃值: (766)
能力值: (RANK:410 )
在线值:
发帖
回帖
粉丝
6
前面你说的没有错,不过TCHAR是一个字节,不是4个字节,只是lfFaceName变量是一个TCHAR变量数组,他的大小就是1个字节*LF_FACESIZE=n个字节。而LF_FACESIZE被定义32,所以lfFaceName是1*32=32个字节大小。也就是说这个变量最小可以变1个字节内容,最大可以放31个字节的内容(最后一个字节必须为零)。
2009-2-1 10:35
0
雪    币: 40
活跃值: (18)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
那就糊涂了
要是TCHAR是1个字节
怎么计算 LOGFONT 是32个字节呢?

继续请教,谢谢先
2009-2-2 11:02
0
雪    币: 424
活跃值: (10)
能力值: ( LV9,RANK:850 )
在线值:
发帖
回帖
粉丝
8
TCHAR是一个字节没错,但是那是一个数组,"宋体"这个字符串有四个字节,
所以算起来是五个long(4*5) + 8个BYTE(1*8) + strlen("宋体")(4个字节) = 32
2009-2-2 12:51
0
雪    币: 40
活跃值: (18)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
“宋体”=CBCECCE5,请问这个是怎么得到的?
谢谢先
2009-2-2 17:16
0
雪    币: 293
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
用记事本新建一个文本文件,写入“宋体”两个字,保存的时候选ANSI编码,再用16进制编辑器打开就看到了CB CE CC E5
2009-2-2 17:34
0
雪    币: 40
活跃值: (18)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
11
用记事本新建一个文本文件,写入“宋体”两个字,保存的时候选ANSI编码
===我建立了
但是使用UE打开的时候,就是只有“宋体”两个字,并没有CB CE CC E5

不知为什么?

不过我现在知道那个是GBK的编码了,就是不知怎么样才能更好将汉字转化成编码?

谢谢先
2009-2-2 20:55
0
雪    币: 206
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
12
路过,学习!
2009-2-2 21:15
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
13
晕,新来乍到看的头晕
2009-2-2 21:35
0
雪    币: 293
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
14
不是吧?UE这么经典的工具还没研究过?
上传的附件:
2009-2-3 01:30
0
雪    币: 40
活跃值: (18)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
15
谢谢icersg大侠!!!
我是菜鸟,感觉那个UE也是功能很强大的 呢
使用UE有段时间了,文本文件比较大的我都是使用UE打开,要是使用记事本打开很快就死机
但是UE的高级功能,比如如何使用UE写Java,C++,asm倒是没有搞过
我都是使用相关的IDE来做 的
2009-2-3 08:59
0
游客
登录 | 注册 方可回帖
返回
//