31 lines
582 B
Plaintext
31 lines
582 B
Plaintext
|
package require binary
|
||
|
|
||
|
proc hexdump {str} {
|
||
|
set s ""
|
||
|
set addr 0
|
||
|
|
||
|
append s "[format "%07x" $addr]: "
|
||
|
set t ""
|
||
|
for {set i 0} {$i < [string length $str]} {incr i} {
|
||
|
if {$i > 0 && [expr $i % 16] == 0} {
|
||
|
append s " $t\n"
|
||
|
append s "[format "%07x" $addr]: "
|
||
|
incr addr 16
|
||
|
set t ""
|
||
|
} elseif {$i > 0 && [expr $i % 2] == 0} {
|
||
|
append s " "
|
||
|
}
|
||
|
|
||
|
set char [string index $str $i]
|
||
|
binary scan $char H2 cc
|
||
|
append s $cc
|
||
|
if {[string is print $char]} {
|
||
|
append t $char
|
||
|
} else {
|
||
|
append t "."
|
||
|
}
|
||
|
}
|
||
|
puts $s
|
||
|
}
|
||
|
|