首页
社区
课程
招聘
请教一个C++的初级问题
发表于: 2008-10-11 07:54 4644

请教一个C++的初级问题

2008-10-11 07:54
4644
汇编格式
aa  db 09h,31h,32h,0 ;定义一个字符串

C++格式

char * aa = "\x0912" //想定义一个和汇编格式相同的字符串,但这样写结果不对。

请问应该怎样在C++中定义一个和汇编格式一样的字符串?

希望各位高手指点一下

[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

收藏
免费 0
支持
分享
最新回复 (5)
雪    币: 503
活跃值: (80)
能力值: (RANK:280 )
在线值:
发帖
回帖
粉丝
2
"\x09\x31\x32"
2008-10-11 08:16
0
雪    币: 141
活跃值: (1135)
能力值: ( LV2,RANK:150 )
在线值:
发帖
回帖
粉丝
3
标准写法是:
char * aa="\t12";

// 测试程序
#include <iostream>

void main(void)
{
        char * aa = "\t12";
        std::cout << aa << std::endl;
        return;
}
2008-10-11 08:39
0
雪    币: 239
活跃值: (160)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
首先非常感谢楼上两位的热情回复。
还有一点转不过弯来,请继续指点一下
如换成下面代码

汇编格式
aa  db 97h,31h,32h,0 ;定义一个字符串

C++格式

char * aa = "\x9712" //想定义一个和汇编格式相同的字符串,但这样写结果不对。

那么应该如何写呢?
2008-10-11 09:01
0
雪    币: 503
活跃值: (80)
能力值: (RANK:280 )
在线值:
发帖
回帖
粉丝
5
每个字节都用16进制表示"\x97\x31\x32"

编译器会把\x之后的所有字节都考虑成一个16进制BYTE,除非是读到了一个非数字并且非'a'->'f'的字节,因此"\x9712"的9712看成了一个字节来处理,所以不合法
但假如是"\x97 12"因为97后是一个空格(不是数字也不是'a'到'f'),所以就不会出错,之后的12也被正常考虑为两个单独的字节
2008-10-11 09:35
0
雪    币: 239
活跃值: (160)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
谢谢你的回复,实在无办法,我看来也只能用wsprintf来过渡了。
2008-10-11 13:52
0
游客
登录 | 注册 方可回帖
返回
//