delphi中类型转换如把一个字符串转成整型,这个装换过程执行了啥操作呢?有点不能理解

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了delphi中类型转换如把一个字符串转成整型,这个装换过程执行了啥操作呢?有点不能理解相关的知识,希望对你有一定的参考价值。

参考技术A delphi7源码system.valLong,用于将字符串包括16进制转换为整数。
各个字符转整数底层一般调用了val函数,val函数原型是_ValLong
function _ValLong(const s: String; var code: Integer): Longint;
var
I: Integer;
Negative, Hex: Boolean;
begin
I := 1;
code := -1;
Result := 0;
Negative := False;
Hex := False;
while (I <= Length(s)) and (s[I] = ' ') do Inc(I);
if I > Length(s) then Exit;
case s[I] of
'$',
'x',
'X': begin
Hex := True;
Inc(I);
end;
'0': begin
Hex := (Length(s) > I) and (UpCase(s[I+1]) = 'X');
if Hex then Inc(I,2);
end;
'-': begin
Negative := True;
Inc(I);
end;
'+': Inc(I);
end;
if Hex then
while I <= Length(s) do
begin
if Result > (High(Result) div 16) then
begin
code := I;
Exit;
end;
case s[I] of
'0'..'9': Result := Result * 16 + Ord(s[I]) - Ord('0');
'a'..'f': Result := Result * 16 + Ord(s[I]) - Ord('a') + 10;
'A'..'F': Result := Result * 16 + Ord(s[I]) - Ord('A') + 10;
else
code := I;
Exit;
end;
end
else
while I <= Length(s) do
begin
if Result > (High(Result) div 10) then
begin
code := I;
Exit;
end;
Result := Result * 10 + Ord(s[I]) - Ord('0');
Inc(I);
end;
if Negative then
Result := -Result;
code := 0;
end;

类型强转
另外 int i =integer(string1) 估计相当于c语言的取得对象到指针,后续用 string1=string(i)相当于将指针接引用为对象、

python数据类型的转换

#软件工具:Sublime Text

#引出问题:为什么需要数据类型的转换?
a = ‘1‘
b = ‘2‘
c = a + b
print(c)
#结果为12,因为字符串类型相加实际为拼接
#想要结果为3,就需要将字符串类型转换为整型
d = int(a) + int(b)
print(d)
#结果为3

#一、转换成整型
#1.浮点类型转换成整型
a= 4.567
b = int(a)
print(b)
#结果为4,所以浮点类型转换成整型,舍去了所有小数部分,只保留整数部分

#2.字符串类型转换成整型
a = ‘1234‘
b = int(a)
print(b)
#结果为1234,舍去了引号
print(type(b))#查看b的数据类型
#在字符串类型转换成整型的过程中,字符串中不能出现任何非数字的字符,否则报错
c = ‘1234.5‘
d = int(c)
print(d)
#结果报错,所以不能有小数点、字母或者其他非数字字符

#二、将整型/浮点型转换为字符串类型
#没有任何的约束,直接转换
a = 123
b = 234.0
a_str =str(a)
b_str =str(b)
print(a_str)
print(type(a_str))
print(b_str)
print(type(b_str))

#三、转换为浮点类型
#1.将整型转换为浮点类型
#没有任何约束,直接转换
a = 2
b = float(a)
print(b)
print(type(b))

#2.将字符串类型转换为浮点类型
#在字符串中,不能出现除小数点以外的任意字符,否则转换失败
a = ‘1234‘
b = float(a)
print(b)
#结果为1234.0
print(type(b))
c = ‘123.4‘#允许出现小数点
d = float(c)
print(d)
#结果为123.4
print(type(d))

以上是关于delphi中类型转换如把一个字符串转成整型,这个装换过程执行了啥操作呢?有点不能理解的主要内容,如果未能解决你的问题,请参考以下文章

delphi 字符串转入整型数组

Oracle中如何用SQL把字符串转换成整型

java 怎么把字符串转化成整型

php怎么把中文的日期转换成整型

C语言中关于字符串转整型?

Oracle中如何用SQL把字符串转换成整型