Apakah ada perintah sederhana untuk membalikkan angka heksadesimal?
Misalnya, diberi angka heksadesimal:
030201
Outputnya harus:
010203
Menggunakan rev
perintah, saya mendapatkan yang berikut:
102030
Memperbarui
$ bash --version | head -n1
GNU bash, version 4.3.11(1)-release (x86_64-pc-linux-gnu)
$ xxd -version
xxd V1.10 27oct98 by Juergen Weigert
$ rev --version
rev from util-linux 2.20.1
command-line
numeric-data
hex
Iñaki Murillo
sumber
sumber
010203
sebagai heksadesimal, meskipun saya tidak menggunakan0x
Jawaban:
Anda dapat mengonversinya menjadi biner , membalikkan byte , secara opsional menghapus trailing newlines
rev
<2.24 , dan mengubahnya kembali:Menggunakan
Ini tidak berfungsi jika string berisi byte NUL, karena
rev
akan memotong output pada saat itu.sumber
0102030a
bukannya010203
0102030a
rev
versi Anda2.20.1
; gunakan format inixxd -revert -plain <<< '030201' | LC_ALL=C rev | tr -d '\n'| xxd -plain
rev
sebelum versi2.24
memiliki bug baris baru. info lebih lanjut github.com/karelzak/util-linux/commit/…Jika sistem Anda memiliki
rev
perintah.Jika memiliki
tac
atautail -r
perintah:Dengan
zsh
:(seperti dalam
dd
pendekatan: menukar pasangan karakter, dibagi menjadi daftar karakter individu (s::
), membalik urutan (Oa
) dan bergabung (j::
)).POSIXly:
Atau
Dengan
perl
:sumber
perl -F'(..)' -lane 'print reverse(@F)'
:)-F
seperti itu. (Saya bisa melihatnya dijelaskan dalamsplit()
manual sekarang).-F
pada dasarnya membelah$_
.. selain menggunakan regex seperti-F'/"\K\|(?=")/'
orang dapat menentukan jumlah split juga ... seperti-F'/:/,$_,2'
... gunakan()
jika pemisah harus ditangkap jugatr -d '\n'
Dengan
fold
+tac
+tr
:fold
- belah setiap 2 bytetac
- membalikkan kucingtr
- hapus baris barusumber
Ini mengembalikan setiap baris heksadesimal:
/(..)/g
membangun daftar dengan korek api yang diambilsumber
(demi kelengkapan)
sumber
Berdasarkan jawaban Ipor Sircer https://unix.stackexchange.com/a/321867/337458 Saya akan merekomendasikan ini pada Anda
~/.bashrc
untuk memiliki perintah yang bagus yang bisa Anda panggil:sumber