ホームページ  >  記事  >  バックエンド開発  >  ord($str)>0x80 については PHP_PHP チュートリアルで詳しく説明しています

ord($str)>0x80 については PHP_PHP チュートリアルで詳しく説明しています

WBOY
WBOYオリジナル
2016-07-21 15:16:14846ブラウズ

GBK 簡体字セットのエンコーディングは 1 バイトと 2 バイトの両方で表されます。上位ビットが0x00~0x7fの場合は1バイトです。上位ビットが0x80以上の場合は2バイトで表されます。

注:括弧内はすべてバイナリですバイトの 1 つが 0x7f より大きい場合、それは (別のバイトと結合された) 漢字である必要があります。 0x7f (1111111) の次の数字は 0x80 (10000000) であるため、それが確実に 0x7f より大きいと判断するにはどうすればよいですか?このバイトの最上位ビットである 0x7f よりも大きくしたい場合は、すべて間違いなく 1 なので、最上位ビットが 1 であるかどうかを判断するだけで済みます。


判定方法:

bit AND (同じビットは 1) 1 の場合のみ、そうでない場合は 0): 例: 数値の 3 桁目が 1 であるかどうかを判断するには、4 (100) 桁の AND をたどるだけです。数値の 2 桁目が 1 であるかどうかを判断します。 1、2 桁の AND をたどります
同様に、8 桁目が 1 であるかどうかを判断するには、 (10000000) と AND をとります。これは 0x80 です

ここで >0x7f を使用してみてはいかがでしょうか。 OK、しかし、他の厳密に型指定された言語では、1 バイトの最上位ビットが負の数値をマークするために使用され、負の数値は絶対に不可能です 0x7f (最大の整数) より大きい

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

b の ASSIC コードは 98 (1100010)
b の ASSIC コード それは 66 (1000010)

a から z までの文字が小文字である限り、 6 桁目は 1 である必要があります。これを使用して大文字と小文字を区別できます:
この時点では、文字の後に 0x20 (100000 ) の位置と判断を続けるだけです:



コードをコピー

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


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


コードをコピーします
は次のとおりです: $a='a';
$a = chr(ord($a)&(~0x20));



http://www.bkjia.com/PHPjc/325958.html
www.bkjia.com

tru​​e

技術記事 GBK 簡体字セットのエンコーディングは 1 バイトと 2 バイトの両方で表されます。上位ビットが0x00~0x7fの場合は1バイト、上位ビットが0x80以上の場合は2バイトで表します。 注:括弧内は...
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。