お薦め ページ


メニュー

ハワイ島 遊覧飛行ツアー

ハワイ島 B&B・ホテル

ハワイ島 不動産情報

ハワイ島 情報・観光ガイド

ブログ(Blog)

その他

関連サイト

: 個別エントリー・アーカイブ :

2007年2月 4日

Rubyにおける「バックスラッシュ記法」(2)

以前のブログ 「Rubyにおける「バックスラッシュ記法」(1)」 に加えて、Rubyの「バックスラッシュ記法」に 特殊な表記法があるので それについて例題を挙げてみる。

まず、 補足として 以前のブログ 「Rubyにおける「バックスラッシュ記法」(1)」 の例題スクリプト
printf(" %#04x ", "\n"[0])  #=> 0x0a (改行)
で用いた printf のフォーマットについて。 これについては、 Ruby「sprintfフォーマット」 に解説してある。 この例で使用しているフォーマットは「 %#04x 」 この意味を解析してみると、
  • 「 % 」 sprintfフォーマットの開始を表すメタ文字。
  • 「 # 」 16進表示における「 0x 」というプレフィックスを付加することを指定する
  • 「 0 」 出力が右詰めの場合に余った部分に空白の代わりに `0' を詰めこむことを指定する。
  • 「 4 」 幅。この場合は、プレフィックス「 0x 」を含めて4桁ということ。
  • 「 x 」 これは、16進表示するための指示子。
となる。

それでは 「バックスラッシュ記法」の例題にはいる前の 下調べとして e-Words の 「ASCII文字コード表」 から アルファベット「A」の文字コードを調べておく。 そうすると、10進で「65」、8進で「0101」、16進で「0x41」と判る。

ここで、 Ruby「バックスラッシュ記法」 にある
  • \nnn : 8進数表記 (n は 0-7)
  • \xnn : 16進数表記 (n は 0-9,a-f)
を試してみる。 ダブルクォートで囲まれた中で この表現を使うと、 そのコードの文字列になるハズである。ここでは 上記で調べた「A」を例としてスクリプトを書いてみると
p "\101"    #=> "A"    「A」の  8 進 表現
p "\x41"    #=> "A"    「A」の 16進 表現
当たり前ではあるが、それぞれ「 "A" 」と表示される。

話は断線するが、文字「A」の10進のコード「65」から文字に直したい場合は、
p 65.chr    #=> "A"    「A」の 10進数から 文字へ変換
とするとよい。 私見ではあるが、「バックスラッシュ記法」の流れから言うと、
p "\d65"    #=> "A"    「A」の 10進 表現
なんて出来そうな気がするが、これはできない。 単に「 "d65" 」と表示されるだけ。

この他にも
  • \cx : コントロール文字 (x は ASCII 文字)
  • \C-x : コントロール文字 (x は ASCII 文字)
  • \M-x : メタ x (c | 0x80)
  • \M-\C-x : メタ コントロール x
のような「バックスラッシュ記法」がある。

【参考リンク】

カテゴリー: Ruby     2007年2月 4日 22:56

トラックバック

このエントリーのトラックバックURL:
http://www.skymerica.com/blog/yotsumoto/mt/mt-tb.cgi/700


コメント

コメントしてください




保存しますか?


 
ハワイ島での遊覧飛行ツアーとB&Bのスペシャリスト、スカイメリカ
Copyright © 2003,2009 Skymerica Corp. All rights reserved.