ホームページ  >  記事  >  php教程  >  PHP の ord($str)>0x80 の詳細な説明

PHP の ord($str)>0x80 の詳細な説明

WBOY
WBOYオリジナル
2016-06-13 11:58:011166ブラウズ

GBK 簡体字セットのエンコーディングは 1 バイトと 2 バイトの両方で表されます。上位ビットが 0x00 ~ 0x7f の場合は 1 バイト、上位ビットが 0x80 以上の場合は 2 バイトで表されます。 注: 括弧内はすべてバイナリ
です。
バイトの内容が 0x7f より大きいことがわかった場合、それは (別のバイトと結合された) 漢字である必要があります。 0x7f (1111111) の後の数値は 0x80 (10000000) ) なので、0x7f より大きくしたい場合は、このバイトの最上位ビットは 1 でなければなりません。最上位ビットが 1 であるかどうかを判断するだけで済みます。


判定方法:

ビットごとの AND (同じビットがすべて 1 なら 1、それ以外は 0): 例: の 3 桁目かどうかを判定します。数値が 1 である場合は、4 (100) 個のビット単位の AND をたどって 1 を判定します。数値の 2 桁目が 1 かどうかを判定するには、2(10) ビットの AND をたどるだけです。
同様に、8 桁目かどうかを判定します。

ここで使用しないのは 1 です。(10000000) は 0x80 ビットの AND です。PHP では問題ないかもしれませんが、他の厳密に型指定された言語では最上位ビットが 1 バイトになります。負の数値をマークするために使用されます。負の数値は 0x7f (最大の整数) より大きくすることはできません。

別の例 例:
a の ASSIC コードは 97 (1100001)
ASSIC コードA の A は 65 (1000001)

b の ASSIC コードは 98 (1100010)
B の ASIC コードは 66 (1000010)

ルールが見つかりました: a である限りa-z の文字は小文字で、6 桁目は 1 である必要があります。これを使用して大文字と小文字を判断できます。
現時点では、その後に文字が続くだけです。0x20 (100000) に従って、次のように判断します。



コードをコピー

コードは次のとおりです: if(ord($a)&0x20 ){

//Capital

}


すべての文字を大文字に変更するには、6 番目の位置の 1 を 0 に変更するだけです:



コードをコピー

コードは次のとおりです。 $a='a'

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



声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。