DELPHI7的十六进制转10进制函数

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了DELPHI7的十六进制转10进制函数相关的知识,希望对你有一定的参考价值。

function hextodec(const ahexstring:string):integer
begin
result:= strtoint('$'+ahexstring)
end
我在主函数调用,用字符串转16进制的出来的结果S1:string
s2:integer;
S2:=hextodec(s1);运行报错说:'$' is not valid integer value
该怎么改呢?

参考技术A 这个需要你自己写了。DELPHI 好象没有提供直接函数,函数内容为
var
i : integer;
begin
result := 0;
for i := length(ahexstring) downto 1 do
begin
result := result shl 4;
case ahexstring[i] of
'0'..'9' : result := result + ord(ahexstring[i]) - 48;
'A'..'Z' : result := result + ord(ahexstring[i]) - 55;
'a'..'z' : result := result + ord(ahexstring[i]) - 55 -32;
else
;//非法
end;
end;
参考技术B 你不会没给s1赋值吧,光一个$怎么转,一般比如
s1:='D3';
s2:=hextodec(s1);本回答被提问者采纳

用C语言如何把十进制转换为十六进制,要求程序中运用函数

**
程序功能:求二进制,十进制,八进制
创建人:蒲宇林
创建日期:2007年8月13日
**/
#include

void
two();
void
eight();
void
sixteen();
/**主函数**/
void
main()

int
select;
do

printf("0
-
退出,1
-
十进制转二进制,2
-
十进制转八进制,3
-
十进制转十六进制");
scanf("%d",&select);
switch(select)

case
1
:
two();
break;
//十进制转二进制
case
2
:
eight();
break;
//十进制转八进制
case
3
:
sixteen();
break;
//十进制转十六进制
default
:
printf("您的输入有误,请重新输入!");
break;

if(select
==
0)

break;

while(1);

void
two()

int
num,
i;
int
arr[20];
printf("\n请输入一个十进制数:");
scanf("%d",&num);
for(
i
=
0
;
1
;
i++)
//转换为二进制并存入数组

arr[i]
=
num
%
2;
num
=
num
/
2;
if(num
==
0)

break;


printf("转换为二进制:");
//打印
for(;
i
>=
0
;
i--
)

printf("%d",arr[i]);

printf("\n");

void
eight()

int
num,
i;
int
arr[20];
printf("\n请输入一个十进制数:");
scanf("%d",&num);
for(
i
=
0
;
1
;
i++)
//转换为八进制并存入数组

arr[i]
=
num
%
8;
num
=
num
/
8;
if(num
==
0)

break;


printf("转换为八进制:");
//打印
for(;
i
>=
0
;
i--
)

printf("%d",arr[i]);

printf("\n");

void
sixteen()

int
num,
i;
int
arr[20];
printf("\n请输入一个十进制数:");
scanf("%d",&num);
for(
i
=
0
;
1
;
i++)
//转换为二进制并存入数组

arr[i]
=
num
%
16;
num
=
num
/
16;
if(num
==
0)

break;


printf("转换为十六进制:");
//打印
for(;
i
>=
0
;
i--
)

switch(arr[i])

case
10
:
printf("a");
break;
case
11
:
printf("b");
break;
case
12
:
printf("c");
break;
case
13
:
printf("d");
break;
case
14
:
printf("e");
break;
case
15
:
printf("f");
break;
default
:
printf("%d",arr[i]);


printf("\n");
参考技术A main()

void
change(int
s);
int
num;
printf("请输入这个数:");
scanf("%d",&num);
printf("该数的十六进制形式为:0x%x\n",num);
//直接以十六进制的形式将整数输出
change(num);

void
change(int
s)

char
num1[10];
sprintf(num1,"%x",s);
//sprintf()函数是将变量按指定的格式保存至字符串中。
printf("该数的十六进制形式为:0x%s\n",num1);

说明:
%d
以十进制形式输出整数
%o
以八进制形式输出整数
%x
以16进制形式输出整数
参考技术B 说明:
1.首先变量的值和进制无关
int
a=10;

int
a=0X0A;都是一回事。
2.如果要将一个值用十六进制输出
int
a
=
10;
printf("%X",a);
输出
A
当然了,建议用
printf("0X%X",a);
输出
0XA
附:
%d
以十进制形式输出整数
%o
以八进制形式输出整数
%x
以16进制形式输出整数(0-9
a-f)即:字母小写
%X
以16进制形式输出整数(0-9
A-F)即:字母大写
还是给个可以运行的代码,说明一下问题:
#include

#include

char*
DecToHex(int
iDecVal,char*
szHex)

//将十进制整数格式化为16进制,结果保存在字符串中
sprintf(szHex,"%X",iDecVal);
return
szHex;

void
main()

int
iDecVal;
char
szHex[100];
iDecVal
=
100;
DecToHex(iDecVal,szHex);
printf("Decimal:%d,Hex:%s\n",iDecVal,szHex);

以上是关于DELPHI7的十六进制转10进制函数的主要内容,如果未能解决你的问题,请参考以下文章

16进制转10进制,是否要用strtoul函数

16进制转10进制编程

C#编程 10进制和26进制互转

c语言 十六进制转换为二进制 用函数做

python怎样将16进制转化为2进制

PHP十进制转36进制的函数