请教如何在十六进制和Long/Int/Char/String之间进行类型转换呢(50分)

  • 主题发起人 主题发起人 units
  • 开始时间 开始时间
U

units

Unregistered / Unconfirmed
GUEST, unregistred user!
请教诸位
 
用十进制作为中间件!
 
请教具体怎么做呢?
 
inttostr
strtoint
 
把你要转化的东西现转化为十进制的数字,然后在转化到你要的结果啊
 
HEXTOINT
看有这个函数没
 
可能我没有说明白我的意思,我的意思是c语言的一个long型是占用四个字节,这四个字节按照每四个二进制位转为一个八进制数字的方式转化为一个十六进制数的字符。现在的问题是:
如何将这些十六进制的字符转换为原始的long型或者double型或者char型或者string呢?
 
strtoint('$'+'AAAAA');就可以呀,其中AAAAA是十六进制的字符
 
请教delphilxh这$符号是表示什么意思呢?
 
$+数字 表示16进制
转换可以用copy()
或者move()都可以
for example
begin
iHex : integer;
str : string[4];
begin
iHex := $2365;
move(iHex, str, 4);
// str is a string type
end;
end;
随手写的,你自己测试一下
 
看了真的没有人理解问题:

我们知道C语言里面一个long型占用四个字节的空间,因此这四个字节表示的一个整数被存在某个存储体上,调用函数读取这个存储体时输出结果已经转换成十六进制的字符了(每个字节的存储空间转换为两个十六进制字符)

现在的问题是:如何将这个十六进制的字符串还原为Delphi内的Integer类型数字?请教
 
我觉得上面的人的回答应该满足你的要求了
是不是别人没有理解你的要求
还是你说的不过明白
 
AA AA AA AA byte strtoint($AA) word strtoint($AAAA) Dword
strtoint($AAAAAAAA)
 
我现在明白了。我问错了,其实我的真正问题是如何将一个整型转为四个字节的byte数组
 
如果你是保存到文件上,不用管如何存储,就读四个字节到一个整型变量就行了,保存的时候也是写一个整型变量到文件上,长度四个字节
如果你直接以字符形式读上来再转换,则要注意高低位顺序,转换方式就如上面几位所说
 
这我没试过
一个整型数长度为四个字节32位,保存时不是按照实际位的顺序的,可能是低位在前高位在后,如果你只是存取的话,不用管它顺序,你直接读四个字节到一个整型变量就行了,函数自动处理的
比如16位的整数255实际转化成16进制为00FF,而存储在文件中可能就是FF00
 
保存的时候是用c语言程序保存的,提取的时候已经转成十六进制了
 
多人接受答案了。
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
I
回复
0
查看
724
import
I
后退
顶部