国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發 > PHP > 正文

PHP 中關于ord($str)gt;0x80的詳細說明

2024-05-04 23:13:50
字體:
來源:轉載
供稿:網友
GBK簡體字符集的編碼是同時用1個字節和2個字節來表示的。當高位是0x00~0x7f時,為一個字節,高位為0x80以上時用2個字節表示"

注:括號里面都是2進制

當你發現一個字節的內容大于0x7f,那它肯定是個(跟另外一個字節拼湊成一個)漢字,如何判斷肯定大于0x7f呢?
0x7f(1111111)后面一個數就是0x80(10000000),所以想要大于0x7f,這個字節的最高位都肯定是1,我們只需要判斷這個最高位是否為1就行了。

判斷方法:

位與(相同的位都是1的才為1,否則為0):
如:要判斷一個數的第三位是否是1,只要跟4(100)位與,判斷一個數的第2位是否為1就跟2(10)位與.
同理判斷第八位是否為1只要跟(10000000)也就是0x80位與了.

這里為什么不用>0x7f,php可能還行,但在其他強類型語言里面,1個字節的最高位用來標示負數,一個負數肯定不可能大于0x7f(最大的整數)

再舉個例子:
a的assic碼是97(1100001)
A的assic碼是65(1000001)

b的assic碼是98(1100010)
b的assic碼是66(1000010)

發現一個規律:一個a-z的字母,只要是小寫字母,第六位肯定是1,我們可以用這個來判斷大小寫:
這時候只要跟用以個字母跟0x20(100000)來位與判斷:

復制代碼 代碼如下:


if(ord($a)&0x20){
//大寫
}


如何把所有字母改成大寫?第六位的1改成0就行了:

復制代碼 代碼如下:


$a='a';
$a = chr(ord($a)&(~0x20));
echo $a;

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 扶余县| 保定市| 郯城县| 泸西县| 铁岭县| 阳西县| 于都县| 壶关县| 乐业县| 华坪县| 定南县| 阳江市| 枞阳县| 鄂托克前旗| 阿拉善盟| 乐业县| 惠水县| 富民县| 永昌县| 福建省| 子长县| 呼图壁县| 琼中| 弋阳县| 平原县| 溧水县| 丽水市| 钟祥市| 贞丰县| 屏东县| 秦皇岛市| 澳门| 长阳| 南召县| 英超| 文登市| 宣威市| 和硕县| 玉田县| 仁布县| 绥芬河市|