PHP不使用内置函数实现字符串整数的一个例子
介绍PHP,如果我们想将字符串类型的数目转换为整数,我们通常使用系统内置的API进行转换,但是如果我们不提供API转换,我们将让自己实现一个函数转换。
系统内置api
Num = '345432123美元;
(a)
$ =(int)$;
输出:
int(345432123)
(二)
Num = intval美元(美元数);
输出:
int(345432123)
使用ASCII码
这里我们用ASCII码做转换,因为每个字符都有相应的ASCII码,当字符加、减、乘、除时,实际上是对ASCII码进行加、减、乘、除运算,整数运算后,最终会返回一个整数。
-图片是从网络传输的—
你可以看到的字符'0' ~ 9 ASCII码是48 ~ 57通过以上图。当我们转换,我们使用的每一个字符减去'0',例如,‘0'= 1,20= 2,返回值是一个int型,以下是代码实现。
功能convertint($剂量=){
$ len = strlen($剂量);
$ int=0;
($ i = 0;$ i;
$ int=10;
Num =美元美元美元STRINT {我} - '0';
$ int = $;
}
返回$ int;
}
Num = '345432123美元;
var_dump(convertint($num)); / /输出:int(345432123)
在Redis,还有一个功能提供一个字符串转换。它也是通过ASCII码完成的。实现更严格、更精确,可具体参考。
string2ll功能
#包括
#包括
#包括
将字符串转换成长长。如果可以解析字符串,则返回1。
*成(非溢)长长0否则。值将设置为
*适当时解析的值。
国际string2ll(const char*,size_t Slen,长*值){
常量字符;
size_t计划= 0;
int负= 0;
无符号长v;
如果(计划= Slen)
返回0;
特殊情况:第一个和唯一数字是0。
如果(Slen = = 1 P { 0 } = = '0'){
如果(值)!= NULL)*值= 0;
返回1;
}
如果({ { 0 } = {)
负= 1;
P + + + +;计划;
仅在负号上中止。
如果(计划= Slen)
返回0;
}
第一个数字应该是1-9,否则字符串应该是0…
如果(p { 0 } > = '1'p { 0 } < = 9){
V = P { 0 } - '0';
P + + + +;计划;
别的}如果(p { 0 } = = '0'slen = = 1){
*值= 0;
返回1;
{人}
返回0;
}
而(计划= '0'p { 0 } < = 9){
如果(V>(ullong_max / 10) / * * /溢出。)
返回0;
v=10;
如果(V>(ullong_max -(P { 0 } - '0'))) / * * /溢出。
返回0;
V = P { 0 } - '0';
P + + + +;计划;
}
如果没有返回所有字节,则使用。
如果(计划<< Slen)
返回0;
如果(否定){
如果(V>((unsigned long(长)+ 1(llong_min + 1)))) / * * /溢出。
返回0;
如果(值)!= NULL)*值= v;
{人}
如果(V>llong_max) / * * /溢出。
返回0;
如果(值)!= NULL)*值= v;
}
返回1;
}
/ / --------执行
int main(){
长号;
string2ll(345432123
printf(%d,努姆);输出345432123
返还0;
}
总结
以上就是本文的全部内容。希望本文的内容能给大家的学习或工作带来一定的帮助。如果有任何疑问,可以留言交流,谢谢您的支持。