[#6219] Ruby連載 第4話 — matz@... (Yukihiro Matsumoto)

まつもと ゆきひろです

32 messages 1998/02/04
[#6221] Re: Ruby連載 第4話 — Shin-ichiro HARA <sinara@...> 1998/02/04

原です。

[#6224] Re: Ruby連載 第4話 — Yasunari Momoi <conan@...> 1998/02/04

ももちゃん@あるもにこすです.

[#6225] Re: Ruby連載 第4話 — matz@... (Yukihiro Matsumoto) 1998/02/04

まつもと ゆきひろです

[#6249] Re: i++ — 助田 雅紀 <masaki.suketa@...>

助田です。

33 messages 1998/02/04
[#6252] Re: i++ — gotoken@... (GOTO Kentaro) 1998/02/05

ことけんです

[#6255] Re: i++ — matz@... (Yukihiro Matsumoto) 1998/02/05

まつもと ゆきひろです

[#6260] Re: i++ — Yuji Shigehiro <sigehiro@...> 1998/02/05

しげひろです.

[#6314] RE: ruby's design policy (Re: I'd like to subscr ibe this ML) — 助田 雅紀 <masaki.suketa@...>

オブジェクト指向周辺をぶらぶらしている助田です。

11 messages 1998/02/06

[#6333] ruby 流に添削して下さい — nkon@...2.3web.ne.jp

13 messages 1998/02/07
[#6335] Re: ruby 流に添削して下さい — OZAWA Sakuro <crouton@...> 1998/02/07

さくです.

[#6372] ruby 1.1b7 released — matz@... (Yukihiro Matsumoto)

まつもと ゆきひろです

24 messages 1998/02/10
[#6402] parsedate (Re: ruby 1.1b7 released) — WATANABE Hirofumi <watanabe@...> 1998/02/13

わたなべです.

[#6405] Re: parsedate (Re: ruby 1.1b7 released) — Tadayoshi Funaba <tadf@...> 1998/02/13

ふなばです。

[#6407] Re: parsedate (Re: ruby 1.1b7 released) — matz@... (Yukihiro Matsumoto) 1998/02/13

まつもと ゆきひろです

[#6373] call for scripts — matz@... (Yukihiro Matsumoto)

まつもと ゆきひろです

133 messages 1998/02/10
[#6414] Re: call for scripts — Terutuoshi Kaneshiro <k-teru@...06.odn.ne.jp> 1998/02/14

金城です.

[#6428] Re: call for scripts — matz@... (Yukihiro Matsumoto) 1998/02/16

まつもと ゆきひろです

[#6448] Re: call for scripts — Terutuoshi Kaneshiro <k-teru@...06.odn.ne.jp> 1998/02/16

金城です.

[#6452] Re: call for scripts — matz@... (Yukihiro Matsumoto) 1998/02/17

まつもと ゆきひろです

[#6481] Re: call for scripts — Kikutani Makoto <kikutani@...> 1998/02/17

きくたに@ぷ〜たろ〜です。

[#6483] Re: call for scripts — OZAWA Sakuro <crouton@...> 1998/02/17

さくです.

[#6495] Re: call for scripts — WATANABE Hirofumi <watanabe@...> 1998/02/18

わたなべです.

[#6416] Re: call for scripts — shugo@... (Shugo Maeda) 1998/02/14

前田です。

[#6417] rgrep (Re: call for scripts) — shugo@... (Shugo Maeda) 1998/02/15

前田です。

[#6423] Re: rgrep (Re: call for scripts) — matz@... (Yukihiro Matsumoto) 1998/02/16

まつもと ゆきひろです

[#6612] Re: call for scripts — Tadayoshi Funaba <tadf@...> 1998/02/21

ふなばです。

[#6582] File::Separator on cygwin — OZAWA Sakuro <ozawa@...>

小澤さくです。

19 messages 1998/02/20
[#6583] Re: File::Separator on cygwin — WATANABE Hirofumi <watanabe@...> 1998/02/20

わたなべです.

[#6586] Re: File::Separator on cygwin — OZAWA Sakuro <ozawa@...> 1998/02/20

小澤さくです。

[#6591] ruby 1.1b8 released — matz@... (Yukihiro Matsumoto)

まつもと ゆきひろです

32 messages 1998/02/20
[#6620] rbc.rb and binding — shugo@... (Shugo Maeda) 1998/02/22

前田です。

[#6629] Re: rbc.rb and binding — keiju@... (石塚圭樹 ) 1998/02/23

けいじゅ@日本ラショナルソフトウェアです.

[#6643] Re: rbc.rb and binding — shugo@... (Shugo Maeda) 1998/02/23

前田です。

[#6649] Re: rbc.rb and binding — keiju@... (石塚圭樹 ) 1998/02/23

けいじゅ@日本ラショナルソフトウェアです.

[#6650] Re: rbc.rb and binding — matz@... (Yukihiro Matsumoto) 1998/02/23

まつもと ゆきひろです

[#6667] JRI 0.5 worked (was Re: rbc.rb and binding) — OZAWA Sakuro <crouton@...> 1998/02/23

さくです.

[#6687] Re: JRI 0.5 worked (was Re: rbc.rb and binding) — shugo@... (Shugo Maeda) 1998/02/24

前田です。

[#6712] JRI and JDBC — OZAWA Sakuro <ozawa@...> 1998/02/24

小澤さくです。

[#6635] hello — WATANABE Tetsuya <tetsu@...>

渡辺哲也と申します。

15 messages 1998/02/23

[#6706] Re: Counter class — toyofuku@...

豊福@パパイヤです。

12 messages 1998/02/24

[#6735] Mutex/ConditionVariable/Queue — shugo@... (Shugo Maeda)

前田です。

27 messages 1998/02/24
[#6746] Re: Mutex/ConditionVariable/Queue — keiju@... (石塚圭樹 ) 1998/02/25

けいじゅ@日本ラショナルソフトウェアです.

[#6747] Re: Mutex/ConditionVariable/Queue — shugo@... (Shugo Maeda) 1998/02/25

前田です。

[#6752] Re: Mutex/ConditionVariable/Queue — senda@... 1998/02/25

From: shugo@po.aianet.ne.jp (Shugo Maeda)

[#6754] Re: Mutex/ConditionVariable/Queue — shugo@... (Shugo Maeda) 1998/02/25

前田です。

[#6756] Re: Mutex/ConditionVariable/Queue — senda@... 1998/02/25

From: shugo@po.aianet.ne.jp (Shugo Maeda)

[#6786] Re: Mutex/ConditionVariable/Queue — senda@...

From: shugo@po.aianet.ne.jp (Shugo Maeda)

33 messages 1998/02/26
[#6791] Re: Mutex/ConditionVariable/Queue — shugo@... (Shugo Maeda) 1998/02/26

前田です。

[#6794] Re: Mutex/ConditionVariable/Queue — shugo@... (Shugo Maeda) 1998/02/26

前田です。

[#6796] Re: Mutex/ConditionVariable/Queue — keiju@... (石塚圭樹 ) 1998/02/26

けいじゅ@日本ラショナルソフトウェアです.

[ruby-list:6672] hd.rb

From: WATANABE Tetsuya <tetsu@...>
Date: 1998-02-23 23:55:24 UTC
List: ruby-list #6672
「ゲット」できるか? 第二段です。

気がつくところがあればどしどし指摘してください。よろしくお
願いします。

■ Ruby で hex dump

バイナリのファイルなどを扱いたい場合や、データの形式を確認
するときなどは、dump プログラムを使用します。od(1) や 
xd(1) (Linux にはないの? と思ったら od -x みたい) と呼ばれ
るものです。ただ、私は od(1) が出力するような形式にはあま
りなじみがありません。Linux の JE などでは jhd が含まれて
います。形式としてはこちらの方が気に入っています(懐かしい
感じです)。

------------------------------
00000000  23 21 20 2F 75 73 72 2F  6C 6F 63 61 6C 2F 62 69  #! /usr/local/bi
00000010  6E 2F 72 75 62 79 0A 23  20 2F 68 6F 6D 65 2F 74  n/ruby.# /home/t
00000020  65 74 73 75 2F 73 72 63  2F 72 75 62 79 2F 68 64  etsu/src/ruby/hd
00000030  2E 72 62 0A 23 20 43 72  65 61 74 65 64 3A 20 46  .rb.# Created: F
00000040  65 62 72 75 61 72 79 20  32 32 2C 31 39 39 38 20  ebruary 22,1998 
------------------------------

jhd を使用すれば、漢字コードまで dump の横のエリアに表示で
きてしまうのでとても便利です。

今回作成したものは、次のような出力になります。漢字も扱えま
す。

------------------------------
00000080  75627920 82c52068 65782064 756d700d  uby で hex dump.
00000090  0a0d0a83 6f834383 69838a82 cc837483  ...バイナリのフ.
000000a0  40834383 8b82c882 c782f088 b582a282  ァイルなどを扱い.
000000b0  bd82a28f ea8d8782 e2814183 66815b83  たい場合や、デー.
------------------------------

漢字を表示する場合、「漢字文字コード」の泣き別れ? が起きな
いようにするところが少しややこしいです。

使い方は、いたって簡単です。

オプション

-s   入力の漢字コードを SJIS として解釈します
-e   入力の漢字コードを EUC として解釈します
-S   出力の漢字コードを SJIS とします
-E   出力の漢字コードを EUC とします(デフォルト)

入力漢字コードのオプション -s か -e を指定しない場合は、漢
字の出力は行われません。

次の例では、Windows95 のファイルを、入力漢字コード SJIS、
出力漢字コード EUC としてファイルの内容をダンプします。

------------------------------
$ hd.rb -s /mnt/dos/Windows/wininit.exe |less
------------------------------

■ ソースコード

------------------------------
#! /usr/local/bin/ruby
# /home/tetsu/src/ruby/hd.rb
# Created: February 22,1998 Sunday 18:39:06
# Author: tetsu(WATANABE Tetsuya)
# $Id: hd.rb,v 1.3 1998/02/23 15:36:57 tetsu Exp $
# usage:

require "kconv"
include Kconv

def usage
  STDERR.print <<E
usage: #$0 [-seSE] [files ...]
 -s     sjis/input code
 -e     euc /input code
 -S     sjis/output code
 -E     euc /output code (default)
E
  exit 1
end

def kstr(bin)
  return bin.tr("\200-\377", '.') unless defined? $kanji_re
  if $c
    bin = $c + bin
    $c = nil
    over = 1
  end
  b = bin.split('')
  for i in 0 .. b.size - 1
    if b[i].size == 2
      next if b[i] =~ /#$kanji_re/o
      b[i] = if over and i == 0; '.'; else '..' end
    elsif b[i].size == 1 and b[i] =~ /[\200-\377]/
      $c = b[i] if i == b.size - 1
      b[i] = '.'
    end
  end
  b[0] = '.' if over and b[0] == '..'
  Kconv.kconv(b.join(''), $lang_out, Kconv::AUTO)
end

$lang_out = Kconv::EUC

while $_ = ARGV[0] and /^-/
  ARGV.shift
  if /[se]/i
    lang_in = if /s/; 'sjis' elsif /e/; 'euc' else nil end
    $lang_out = if /S/; Kconv::SJIS elsif /E/; Kconv::EUC end
  else
    usage
  end
end

if lang_in == 'sjis'
  $kanji_re = '^[\201-\237\340-\374][\100-\176\200-\374]$'
elsif lang_in == 'euc'
  $kanji_re = '^[\241-\376]{2}$'
end

offset = 0

while $_ = $<.read(16)
  data = kstr($_.tr("\000-\037\177", '.'))
  if $_.length == 16
    b = $_.unpack('N4')
    printf("%8.8x  %8.8x %8.8x %8.8x %8.8x",
	   offset, *b);
    print "  ", data, "\n";
    offset += 16
  else
    b = $_.unpack('C*')
    for i in 0 .. b.length - 1
      b[i] = sprintf('%2.2x', b[i])
    end
    for i in b.length .. 16 - 1
      b.push('  ')
    end
    printf("%8.8x  %s%s%s%s %s%s%s%s %s%s%s%s %s%s%s%s",
	   offset, *b);
    print "  ", data, "\n";
    break
  end
end

exit
------------------------------

--
WATANABE Tetsuya HP Japan PSO
e-mail  tetsu@jpn.hp.com

In This Thread

Prev Next