怎么把一个16进制数转化成Char类型?(100分)

  • 主题发起人 主题发起人 暗夜中独舞
  • 开始时间 开始时间

暗夜中独舞

Unregistered / Unconfirmed
GUEST, unregistred user!
比如0x01,0x02,怎么根据这两个数转化成Char类型?
 
你的数据来源是什么?
HexToStr(aint:integer):string;
begin
result := inttohex(aint);
end;

??
 
delphi中用“$”表示16进制,如$51;
chr($01)
 
可能是要将int 到 char 吧
var aInt:integer;
aChar:char;
begin
aInt :=$01;
achar := chr(aInt);
 
强制用char不行吗?
 
0x01,0x02这些都是从C语言拿来的
因为我在用一个DLL,他们给的DEMO是C写的
比如:
char c;
c = 0x01
然后把c当成参数传到DLL的接口中。
我现在不知道在DELPHI中怎么传0x01之类的数。我用chr($01),调用了DLL,EXE直接被退出了。。。。。
 
chr($01)得到是一个控制符,不会显示。
看看chr($51)是否得到“Q”。
 
你的C演示函数的定义是如何的?
 
如果在C语言里一个函数的参数类型是char,那么在Delphi里也用Char就行了,如果在C语言里的参数类型是char *,那么在Delphi里就要转成PChar,那个DLL的函数是怎么定义的?
 
DLL的接口为:
int A(HANDLE hd_no ,
Char CommType,
char *DownInfo, //DownInfo其实是一个结构体
char *ret_info)
我想可能是第三个参数的错误。第三个参数是一个结构体,但是需要把其强制转化成字符指针。。。
 
我想并不是你的参数用错了,而是你的Delphi函数定义错了。你试试下面的定义应该可以使用。
Function A(hd_no:THandle
CommType:Char
DownInfo:pChar
ret_info:pChar):Integer
cdecl
external 'DllName.dll';

然后这样调用:
A(hd_no,Char(1),DownInfo,ret_info);
 
现在调用成功了。。少了一个cdecl,请问这个关键字是用来做什么的?
 
cdecl是C语言函数默认的调用约定,Delphi的函数调用约定默认是Register
 
cdecl,是默认的vc的函数传参方式规则!delphi默认是register,自然会出错了!
把参数是mov eax ,还是push进堆栈,供子函数使用的!
 
多人接受答案了。
 
后退
顶部