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 ) の位置と判断を続けるだけです:
コードをコピー
true