diff options
Diffstat (limited to 'recipes-bsp/change-file-endianess/change-file-endianess/byte_swap.tcl')
-rwxr-xr-x | recipes-bsp/change-file-endianess/change-file-endianess/byte_swap.tcl | 29 |
1 files changed, 29 insertions, 0 deletions
diff --git a/recipes-bsp/change-file-endianess/change-file-endianess/byte_swap.tcl b/recipes-bsp/change-file-endianess/change-file-endianess/byte_swap.tcl new file mode 100755 index 00000000..aca956bd --- /dev/null +++ b/recipes-bsp/change-file-endianess/change-file-endianess/byte_swap.tcl | |||
@@ -0,0 +1,29 @@ | |||
1 | puts $argv | ||
2 | set i_file [lindex $argv 0] | ||
3 | set o_file [lindex $argv 1] | ||
4 | set num_b [lindex $argv 2] | ||
5 | puts "" | ||
6 | |||
7 | set fileid_i [open $i_file "r"] | ||
8 | set fileid_o [open $o_file "w+"] | ||
9 | fconfigure $fileid_i -translation {binary binary} | ||
10 | fconfigure $fileid_o -translation {binary binary} | ||
11 | |||
12 | set old_bin [read $fileid_i] | ||
13 | set new_bin {} | ||
14 | for {set i 0} {$i<[string length $old_bin]} {incr i $num_b} { | ||
15 | for {set j $num_b} {$j>0} {incr j -1} { | ||
16 | append new_bin [string index $old_bin [expr $i+($j-1)]] | ||
17 | } | ||
18 | } | ||
19 | |||
20 | for {set i 0} {$i<[string length $old_bin]} {incr i $num_b} { | ||
21 | set binValue [string range $old_bin [expr $i+0] [expr $i+($num_b-1)]] | ||
22 | binary scan $binValue H[expr $num_b*2] hexValue | ||
23 | |||
24 | set binValue [string range $new_bin [expr $i+0] [expr $i+($num_b-1)]] | ||
25 | binary scan $binValue H[expr $num_b*2] hexValue | ||
26 | } | ||
27 | |||
28 | puts -nonewline $fileid_o $new_bin | ||
29 | close $fileid_o | ||