我在StackOverflow上发现了许多帖子,这些帖子已经用C++,C#和其他语言覆盖了这个问题,但是没有使用Shell.
使用Bash/Shell,如何将随机String
转换为byte array
?
我试过了:
echo "some string" | xxd -r -p
但它不起作用.
我基本上想要一个字节输出 - 例如 )?e?GV??vY?Ge?#G
如果你想获得某些字符串的十六进制值,那么这有效:
$ echo "testing some values"$'\157' | xxd
0000000: 7465 7374 696e 6720 736f 6d65 2076 616c testing some val
0000010: 7565 736f 0a ueso.
如果你只需要"普通"字符串:
$ echo "testing some values"$'\157' | xxd -p
74657374696e6720736f6d652076616c7565736f0a
如果您需要"反转" 十六进制字符串,您可以:
$ echo "74657374696e6720736f6d652076616c7565736f0a" | xxd -r -p
testing some valueso
如果你需要的是字符表示(不是十六进制),你可以这样做:
$ echo "testing:"$'\001\011\n\bend test' | od -vAn -tcx1
t e s t i n g : 001 \t \n \b e n d
74 65 73 74 69 6e 67 3a 01 09 0a 08 65 6e 64 20
t e s t \n
74 65 73 74 0a
要么:
$ echo "testing:"$'\001\011\n\bend test' | od -vAn -tax1
t e s t i n g : soh ht nl bs e n d sp
74 65 73 74 69 6e 67 3a 01 09 0a 08 65 6e 64 20
t e s t nl
74 65 73 74 0a