ラベル 変換 の投稿を表示しています。 すべての投稿を表示
ラベル 変換 の投稿を表示しています。 すべての投稿を表示

2011年3月21日月曜日

半角・全角カナ文字の変換

SJIS ファイル中に含まれる半角カナ文字を全角に変換する例題です。
小文字の英単語も大文字に変換を行っています。
例題に用いられたテキストは SJIS で保存を行ってください。


hankaku.txt
英数字を含む文字列:

When he smiled with NIYARI, he lifted the glasses of a black spot and
floated a haughty expression. Where [ of such a fellow ] will be said
"Really trust"? A command of a superior official still cannot oppose
absolutely and poor. It is being [ such YATSU- of I CHI O U - /
asuperior official ] DA mosquito RA-. The moment such thinking emerged
on the head, it has appeared in expression. It seems that he also has
full knowledge of my thinking enough by years of association, and the
present thinking is also already read. When considering soon, my life
began to turn around a corner of a street greatly from this
moment. Although it is the thing of the future, it will be known
personally that just the slack of this momentary mind was fatal.

日本語文章(半角カナ含む):

彼はニヤリと微笑むと、黒斑の眼鏡を持ち上げ不遜な表情を浮かべた。一体、こんな
奴のどこを信用しろと言うのであろうか?それでも、上司の命令は絶対であり下
手に逆らうことはできない。こんなヤ・ツ・でも、イ・チ・オ・ウ・は、上司なのダ・カ・ラ・。と、
そんな思考が頭に浮かび上がった瞬間、それが表情に出てしまった。長年の付き
合いで彼は私の思考も十分熟知しており、現在の思考もすでに読まれているよ
うだ。今に思えばこの瞬間から、私の人生は大きく曲がり角を回り始めたのであ
る。後々のことであるが、この一瞬の気の緩みこそが命取りであった、というこ
とを身をもって知ることになる。

実行結果
% ./list_xxx
英数字を含む文字列:

WHEN HE SMILED WITH NIYARI, HE LIFTED THE GLASSES OF A BLACK SPOT AND
FLOATED A HAUGHTY EXPRESSION. WHERE [ OF SUCH A FELLOW ] WILL BE SAID
"REALLY TRUST"? A COMMAND OF A SUPERIOR OFFICIAL STILL CANNOT OPPOSE
ABSOLUTELY AND POOR. IT IS BEING [ SUCH YATSU- OF I CHI O U - /
ASUPERIOR OFFICIAL ] DA MOSQUITO RA-. THE MOMENT SUCH THINKING EMERGED
ON THE HEAD, IT HAS APPEARED IN EXPRESSION. IT SEEMS THAT HE ALSO HAS
FULL KNOWLEDGE OF MY THINKING ENOUGH BY YEARS OF ASSOCIATION, AND THE
PRESENT THINKING IS ALSO ALREADY READ. WHEN CONSIDERING SOON, MY LIFE
BEGAN TO TURN AROUND A CORNER OF A STREET GREATLY FROM THIS
MOMENT. ALTHOUGH IT IS THE THING OF THE FUTURE, IT WILL BE KNOWN
PERSONALLY THAT JUST THE SLACK OF THIS MOMENTARY MIND WAS FATAL.

日本語文章(半角カナ含む):

彼はニヤリと微笑むと、黒斑の眼鏡を持ち上げ不遜な表情を浮かべた。一体、こんな
奴のどこを信用しろと言うのであろうか?それでも、上司の命令は絶対であり下
手に逆らうことはできない。こんなヤ・ツ・でも、イ・チ・オ・ウ・は、上司なのダ・カ・ラ・。と、
そんな思考が頭に浮かび上がった瞬間、それが表情に出てしまった。長年の付き
合いで彼は私の思考も十分熟知しており、現在の思考もすでに読まれているよ
うだ。今に思えばこの瞬間から、私の人生は大きく曲がり角を回り始めたのであ
る。後々のことであるが、この一瞬の気の緩みこそが命取りであった、というこ
とを身をもって知ることになる。

%

2011年3月20日日曜日

10進・2進文字列の変換

10進・2進文字列の変換を行う例題です。

相互変換した結果を表示しています。


実行結果

2011年3月18日金曜日

大文字・小文字の変換

小文字を大文字へ、大文字は小文字へ変換する例題です。

tolower, toupper 等の関数がありますが、それらを自分で実装する際には、下記のソースの一部を変更して頂ければ実装可能です。

実行結果

2011年3月16日水曜日

10進・16進[文字列]の変換(バイナリデータからアスキーテキストへの変換)

10進数字から16進文字列への変換(1234 → "04 D2")、
16進文字列から10進数字への変換("04 02" → 1234)、
を行う例題です。

16進数のデータはchar型データの文字列として扱います。
バイナリエディタなどでは、char 型で扱われる 0〜255 までの文字を1バイトずつ printf にて %x 形式で出力すれば良い話です。
一方古い通信機器等では、通信を行う際の形式がアスキー形式かつ1バイト(char)を変換した "AA" ではなく、2バイト(short)、4バイト(int)等の場合があり、一文字のデータを送る場合にも "000000AA" のように "00" 文字を埋めた形のアスキーテキストを送る必要があります。
また、そのアスキーデータを受信した後にバイナリデータとして変換する必要があります。

例題では、バイナリダンプで行うような1バイトずつの16進文字列への変換と、変換するバイト数(1バイト・8バイト)を指定した変換を行っています。
バイナリダンプを行うような場合は、hexdump/dump2char 関数のみを参考にしてください。

バイト数を指定する例ではバイトオーダーを考慮し、リトルエンディアン[最下位のバイト順](Intel) の並びで変換が行われた結果が表示されています(Intel OSX)。
バイトオーダーの違いによるバイト列の並びは以下のようなものです。
例:2バイト(16ビット)の数値(1)
ビッグエンディアン  00000000 00000001  (Byte4:Byte3:Byte2:Byte1)
リトルエンディアン  00000001 00000000  (Byte1:Byte2:Byte3:Byte4)

実行結果