ホームページ バックエンド開発 PHPチュートリアル 用PHP编程读取汉字点阵数据_PHP

用PHP编程读取汉字点阵数据_PHP

Jun 01, 2016 pm 12:30 PM
o str バイト データ 漢字 プログラミング 読む

背景知识:

  简体中文国标字库(1981年订,中国大陆)。7445个字符,其中汉字6773个,包括一级汉字3755个,二级汉字3008个。采用2字节(16位二进制)编码。

  区位码:国标GB2312规定,所有的国标汉字与符号组成一个94×94的矩阵。在此方阵中,每一行称为一个”区”,每一列称为一个”位”,因此,这个方阵实际上组成了一个有94个区(区号分别为0 1到94)、每个区内有94个位(位号分别为01到94)的汉字字符集。一个汉字所在的区号和位号简单地组合在一起就构成了该汉字的”区位码”。在汉字的区位码中,高两位为区号,低两位为位号。由此可见,区位码与汉字或符号之间是一一对应的。

  内码:汉字的内码是指在计算机中表示汉字的编码。机内码与区位码稍有区别。为什么不直接用区位码作为计算机内的编码呢? 这是因为汉字的区码和位码的范围都在1到94内, 如果直接用区位码作机内码, 就会与基本ASCII码冲突。 汉字的内码通常与所使用的计算机系统有关。目前,对于国内大多数的计算机系统,一个汉字的内码占两个字节,分别称为高位字节与低位字节,且这两位字节与区位码的关系如下: 内码高位=区码 A0H(H表示十六进制) 内码低位=位码 A0H 例如,汉字”啊”的区位码为”1601″,区码和位码分别用十六进制表示即为”1001H”,则它的内码为”B0A1H”。其中B0H为内码的高位字节,A1H为内码的低位字节。

  php代码:返回由0和1组成的字符串。

<?php
/**
* 读取汉字点阵数据
*
* @author legend <legendsky@hotmail.com>
* @link http://www.ugia.cn/?p=82
* @Copyright www.ugia.cn
*/

$str = "中华人民共和国" ;

$font_file_name = "simsun12.fon" ; // 点阵字库文件名
$font_width = 12 ; // 单字宽度
$font_height = 12 ; // 单字高度
$start_offset = 0 ; // 偏移

$fp = fopen ( $font_file_name , "rb" );

$offset_size = $font_width * $font_height / 8 ;
$string_size = $font_width * $font_height ;
$dot_string = "" ;

for ( $i = 0 ; $i < strlen ( $str ); $i )
{
 if ( ord ( $str { $i }) > 160 )
 {
  // 先求区位码,然后再计算其在区位码二维表中的位置,进而得出此字符在文件中的偏移
  $offset = (( ord ( $str { $i }) - 0xa1 ) * 94 ord ( $str { $i 1 }) - 0xa1 ) * $offset_size ;
  $i ;
 }
 else
 {
  $offset = ( ord ( $str { $i }) 156 - 1 ) * $offset_size ;
 }

 // 读取其点阵数据
 fseek ( $fp , $start_offset $offset , SEEK_SET );
 $bindot = fread ( $fp , $offset_size );

 for ( $j = 0 ; $j < $offset_size ; $j )
 {
  // 将二进制点阵数据转化为字符串
  $dot_string .= sprintf ( "b" , ord ( $bindot { $j }));
 }
}

fclose ( $fp );

echo $dot_string ;
?>

  其中包括两个点阵字体文件:一个为16×16的chs16.fon,另一个为12×12的simsun12.fon,偏移均为零。
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

コーディングの鍵: 初心者のための Python の力を解き放つ コーディングの鍵: 初心者のための Python の力を解き放つ Oct 11, 2024 pm 12:17 PM

Python は、学習の容易さと強力な機能により、初心者にとって理想的なプログラミング入門言語です。その基本は次のとおりです。 変数: データ (数値、文字列、リストなど) を保存するために使用されます。データ型: 変数内のデータの型 (整数、浮動小数点など) を定義します。演算子: 数学的な演算と比較に使用されます。制御フロー: コード実行のフロー (条件文、ループ) を制御します。

Python による問題解決: 初心者プログラマーとして強力なソリューションをアンロックする Python による問題解決: 初心者プログラマーとして強力なソリューションをアンロックする Oct 11, 2024 pm 08:58 PM

Python は、問題解決の初心者に力を与えます。ユーザーフレンドリーな構文、広範なライブラリ、変数、条件文、ループによる効率的なコード開発などの機能を備えています。データの管理からプログラム フローの制御、反復的なタスクの実行まで、Python が提供します

BTCトレーディングアプリをインストールして登録する方法は? BTCトレーディングアプリをインストールして登録する方法は? Feb 21, 2025 pm 07:09 PM

この記事では、ビットコイン取引アプリケーションのインストールと登録方法の詳細な紹介について説明します。ビットコイン取引アプリを使用すると、ユーザーはビットコインなどの暗号通貨を管理および取引できます。この記事では、アプリケーションのダウンロード、アカウントの作成、身元確認の実行、最初のデポジットなど、インストールおよび登録プロセスを段階的にガイドします。この記事の目標は、初心者に明確で理解しやすいガイドラインを提供して、ビットコイン取引の世界に簡単に参入できるようにすることです。

OUYI Exchangeダウンロード公式ポータル OUYI Exchangeダウンロード公式ポータル Feb 21, 2025 pm 07:51 PM

OKXとしても知られるOUYIは、世界をリードする暗号通貨取引プラットフォームです。この記事では、OUYIの公式インストールパッケージのダウンロードポータルを提供します。これにより、ユーザーはさまざまなデバイスにOUYIクライアントをインストールすることが容易になります。このインストールパッケージは、Windows、Mac、Android、およびiOSシステムをサポートします。インストールが完了した後、ユーザーはOUYIアカウントに登録またはログインし、暗号通貨の取引を開始し、プラットフォームが提供するその他のサービスを楽しむことができます。

C の謎を解く: 新人プログラマーのための明確でシンプルな道 C の謎を解く: 新人プログラマーのための明確でシンプルな道 Oct 11, 2024 pm 10:47 PM

C は、初心者がシステム プログラミングを学習するのに最適な選択肢です。ヘッダー ファイル、関数、メイン関数のコンポーネントが含まれています。 「HelloWorld」を印刷できる単純な C プログラムには、標準入出力関数宣言を含むヘッダー ファイルが必要で、main 関数で printf 関数を使用して印刷します。 C プログラムは、GCC コンパイラーを使用してコンパイルして実行できます。基本をマスターしたら、データ型、関数、配列、ファイル処理などのトピックに進み、熟練した C プログラマーになることができます。

未来を創る: まったくの初心者のための Java プログラミング 未来を創る: まったくの初心者のための Java プログラミング Oct 13, 2024 pm 01:32 PM

Java は、初心者と経験豊富な開発者の両方が学習できる人気のあるプログラミング言語です。このチュートリアルは基本的な概念から始まり、高度なトピックに進みます。 Java Development Kit をインストールしたら、簡単な「Hello, World!」プログラムを作成してプログラミングを練習できます。コードを理解したら、コマンド プロンプトを使用してプログラムをコンパイルして実行すると、コンソールに「Hello, World!」と出力されます。 Java の学習はプログラミングの旅の始まりであり、習熟が深まるにつれて、より複雑なアプリケーションを作成できるようになります。

Java をシンプルに: プログラミング能力を高める初心者向けガイド Java をシンプルに: プログラミング能力を高める初心者向けガイド Oct 11, 2024 pm 06:30 PM

Java をシンプルに: プログラミング能力の初心者向けガイド はじめに Java は、モバイル アプリケーションからエンタープライズ レベルのシステムに至るまで、あらゆるもので使用される強力なプログラミング言語です。初心者にとって、Java の構文はシンプルで理解しやすいため、プログラミングの学習に最適です。基本構文 Java は、クラスベースのオブジェクト指向プログラミング パラダイムを使用します。クラスは、関連するデータと動作をまとめて編成するテンプレートです。簡単な Java クラスの例を次に示します。 publicclassperson{privateStringname;privateintage;

トップ10グローバルデジタル通貨取引アプリを推奨する(2025通貨取引ソフトウェアのランキング) トップ10グローバルデジタル通貨取引アプリを推奨する(2025通貨取引ソフトウェアのランキング) Mar 12, 2025 pm 05:48 PM

この記事では、Binance、Okx、Huobi Global、Coinbase、Kraken、Gate.io、Kucoin、Bitfinex、Gemini、Bitstampなど、世界のトップ10のデジタル通貨取引アプリを推奨しています。これらのプラットフォームには、トランザクションペアの数量、トランザクション速度、セキュリティ、コンプライアンス、ユーザーエクスペリエンスなどの点で独自の特性があります。たとえば、Binanceは高いトランザクション速度と広範なサービスで知られていますが、Coinbaseは初心者により適しています。自分に合ったプラットフォームを選択するには、自分のニーズとリスク許容度を包括的に検討する必要があります。 世界の主流のデジタル通貨取引プラットフォームについて学び、デジタル資産取引を安全かつ効率的に行うのに役立ちます。

See all articles