首页
社区
课程
招聘
[求助]请会delphi的兄弟帮帮忙!
发表于: 2005-2-5 10:31 5419

[求助]请会delphi的兄弟帮帮忙!

2005-2-5 10:31
5419
请问 delphi中有没有这样一种函数,可以把字符串型的16进制数转化为10进制的数值型?

比如: 字符串型的 'AB' 可以变为数值型的 171(16进制为AB),谢谢!

如果没有函数,请会的兄弟提供一段转换代码给我,谢谢!

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

收藏
免费 0
支持
分享
最新回复 (5)
雪    币: 296
活跃值: (260)
能力值: ( LV9,RANK:210 )
在线值:
发帖
回帖
粉丝
2
使用Ord()函数可以获得字符的ASCII码(十进制),它类似于VB的Asc()函数。
2005-2-5 10:55
0
雪    币: 211
活跃值: (40)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
StrToInt('$'+'AB');
2005-2-5 10:58
0
雪    币: 296
活跃值: (260)
能力值: ( LV9,RANK:210 )
在线值:
发帖
回帖
粉丝
4
格式化字符串
使用加号(+)操作符和转换函数(如IntToStr),你确实能把已有值组合成字符串,不过另有一种方法能格式化数字、货币值和其他字符串,这就是功能强大的Format 函数及其一族。

Format 函数参数包括:一个基本文本字符串、一些占位符(通常由%符号标出)和一个数值数组,数组中每个值对应一个占位符。例如,把两个数字格式化为字符串的代码如下:

Format ('First %d, Second %d', [n1, n2]);
其中n1和n2是两个整数值,第一个占位符由第一个值替代,第二个占位符由第二个值替代,以此类推。如果占位符输出类型(由%符号后面的字母表示)与对应的参数类型不匹配,将产生一个运行时间错误,因此设置编译时间类型检查会有利于Format 函数的使用。

除了%d外,Format 函数还定义了许多占位符,见表7.1。这些占位符定义了相应数据类型的默认输出,你可以用更深一层的格式化约束改变默认输出,例如一个宽度约束决定了输出中的字符个数,而精度约束决定了小数点的位数。例如

Format ('%8d', [n1]);
该句把数字n1转换成有8个字符的字符串,并通过填充空白使文本右对齐,左对齐用减号(-) 。

表 7.1: Format函数的占位符

占位符 说明
d (decimal) 将整型值转换为十进制数字字符串
x (hexadecimal) 将整型值转换为十六进制数字字符串
p (pointer) 将指针值转换为十六进制数字字符串
s (string) 拷贝字符串、字符、或字符指针值到一个输出字符串
e (exponential) 将浮点值转换为指数表示的字符串
f (floating point) 将浮点值转换为浮点表示的字符串
g (general) 使用浮点或指数将浮点值转换为最短的十进制字符串
n (number) 将浮点值转换为带千位分隔符的浮点值
m (money) 将浮点值转换为现金数量表示的字符串,转换结果取决于地域设置,详见Delphi帮助文件的Currency and date/time formatting variables主题
2005-2-5 10:59
0
雪    币: 332
活跃值: (479)
能力值: ( LV9,RANK:330 )
在线值:
发帖
回帖
粉丝
5
function HexStrToInteger1(HexStr:string):integer;
var
        i : integer;
        s : string;
begin
        s := '$' + HexStr;
        i := StrToInt(s);
        Result := i;
end;

function HexStrToInteger2(HexStr:string):integer;
const
        HEX : array['A'..'F'] of INTEGER = (10,11,12,13,14,15);
var
        Int : integer;
        i : integer;
begin
        Int := 0;
        for i := 1 to Length(HexStr) do
                if HexStr[i] < 'A'
                        then Int := Int * 16 + ORD(HexStr[i]) - 48
                else
                        Int := Int * 16 + HEX[HexStr[i]];
        Result := Int;
end;
2005-2-5 11:16
0
雪    币: 200
活跃值: (75)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
6
谢谢各位!
我知道了!
2005-2-5 13:26
0
游客
登录 | 注册 方可回帖
返回
//