php中字符串如何轉(zhuǎn)換整型

小編給大家分享一下php中字符串如何轉(zhuǎn)換整型,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!

讓客戶滿意是我們工作的目標(biāo),不斷超越客戶的期望值來自于我們對這個行業(yè)的熱愛。我們立志把好的技術(shù)通過有效、簡單的方式提供給客戶,將通過不懈努力成為客戶在信息化領(lǐng)域值得信任、有價值的長期合作伙伴,公司提供的服務(wù)項目有:主機域名、虛擬主機、營銷軟件、網(wǎng)站建設(shè)、融水網(wǎng)站維護(hù)、網(wǎng)站推廣。

php字符串轉(zhuǎn)換整型的方法:1、通過“intval($num);”方法將字符串類型的數(shù)字轉(zhuǎn)成整型的數(shù)字;2、利用ascii碼的方式將字符串轉(zhuǎn)成整型。

PHP-字符串轉(zhuǎn)整型-不使用內(nèi)置函數(shù)

介紹

php字符串類型的數(shù)字如果想轉(zhuǎn)成整型的數(shù)字,一般我們都是采用系統(tǒng)內(nèi)置的API去做轉(zhuǎn)換,但如果規(guī)定就不讓我們?nèi)ビ孟到y(tǒng)內(nèi)置的API轉(zhuǎn)換,而是讓自己去實現(xiàn)一個函數(shù)轉(zhuǎn)換該怎么辦?這里我們看下如何去實現(xiàn)。

系統(tǒng)內(nèi)置 API 方式

$num = '345432123';
 
 //(一)
$num = (int)$num;
//輸出:
//int(345432123)
 
//(二)
$num = intval($num);
//輸出:
//int(345432123)

采用 ASCII 碼方式

下面我們利用 ascii 碼的方式去做轉(zhuǎn)換,因為每個字符都對應(yīng)一個 ascii 碼,當(dāng)對這個字符做加減乘除的時候,實際上就是對 ascii 碼做加減乘除操作,也就是整型操作,最終會返回一個整型數(shù)字.

字符 '0' ~ '9' 的 ascii 碼是 48~57 我們在轉(zhuǎn)換的時候就是用每一個字符減去 '0' 例如: '1' - '0' = 1、'2' - '0' = 2 返回值就是一個Int類型,下面具體看代碼實現(xiàn).

function convertInt($strInt = ''){ 
    $len = strlen($strInt);  
    $int = 0;
 
    for($i=0;$i<$len;$i++){
        $int *= 10;            
        $num = $strInt{$i} - '0';            
        $int += $num;        
    }
 
    return $int;        
}
 
 $num = '345432123';    
 var_dump(convertInt($num)); //輸出: int(345432123)
在 redis 里面也有提供一個字符串轉(zhuǎn)整型的函數(shù),也是通過ascii碼方式去做的,實現(xiàn)的比較完善嚴(yán)謹(jǐn),具體可以參考下
string2ll 函數(shù)
#include <stdio.h>
#include <limits.h>
#include <string.h>
 
/* Convert a string into a long long. Returns 1 if the string could be parsed
 * into a (non-overflowing) long long, 0 otherwise. The value will be set to
 * the parsed value when appropriate. */
int string2ll(const char *s, size_t slen, long long *value) {
    const char *p = s;
    size_t plen = 0;
    int negative = 0;
    unsigned long long v;
 
    if (plen == slen)
        return 0;
 
    /* Special case: first and only digit is 0. */
    if (slen == 1 && p[0] == '0') {
        if (value != NULL) *value = 0;
        return 1;
    }
 
    if (p[0] == '-') {
        negative = 1;
        p++; plen++;
 
        /* Abort on only a negative sign. */
        if (plen == slen)
            return 0;
    }
 
    /* First digit should be 1-9, otherwise the string should just be 0. */
    if (p[0] >= '1' && p[0] <= '9') {
        v = p[0]-'0';
        p++; plen++;
    } else if (p[0] == '0' && slen == 1) {
        *value = 0;
        return 1;
    } else {
        return 0;
    }
 
    while (plen < slen && p[0] >= '0' && p[0] <= '9') {
        if (v > (ULLONG_MAX / 10)) /* Overflow. */
            return 0;
        v *= 10;
 
        if (v > (ULLONG_MAX - (p[0]-'0'))) /* Overflow. */
            return 0;
        v += p[0]-'0';
 
        p++; plen++;
    }
 
    /* Return if not all bytes were used. */
    if (plen < slen)
        return 0;
 
    if (negative) {
        if (v > ((unsigned long long)(-(LLONG_MIN+1))+1)) /* Overflow. */
            return 0;
        if (value != NULL) *value = -v;
    } else {
        if (v > LLONG_MAX) /* Overflow. */
            return 0;
        if (value != NULL) *value = v;
    }
    return 1;
}
 
//-------- 執(zhí)行 ---------
int main(){
    long long num;
    string2ll("345432123",strlen("345432123"),&num);
    printf("%d\n",num); //輸出 345432123
    retunr 0;
}

以上是“php中字符串如何轉(zhuǎn)換整型”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對大家有所幫助,如果還想學(xué)習(xí)更多知識,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道!

本文名稱:php中字符串如何轉(zhuǎn)換整型
文章起源:http://muchs.cn/article14/gphige.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站制作、云服務(wù)器、自適應(yīng)網(wǎng)站、全網(wǎng)營銷推廣網(wǎng)站內(nèi)鏈、軟件開發(fā)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

商城網(wǎng)站建設(shè)