ale*_*sic 9 arrays bash shell byte
我在StackOverflow上发现了许多帖子,这些帖子已经用C++,C#和其他语言覆盖了这个问题,但是没有使用Shell.
使用Bash/Shell,如何将随机String转换为byte array?
我试过了:
echo "some string" | xxd -r -p
Run Code Online (Sandbox Code Playgroud)
但它不起作用.
我基本上想要一个字节输出 - 例如 )?e?GV??vY?Ge?#G
小智 19
如果你想获得某些字符串的十六进制值,那么这有效:
$ echo "testing some values"$'\157' | xxd
0000000: 7465 7374 696e 6720 736f 6d65 2076 616c testing some val
0000010: 7565 736f 0a ueso.
Run Code Online (Sandbox Code Playgroud)
如果你只需要"普通"字符串:
$ echo "testing some values"$'\157' | xxd -p
74657374696e6720736f6d652076616c7565736f0a
Run Code Online (Sandbox Code Playgroud)
如果您需要"反转" 十六进制字符串,您可以:
$ echo "74657374696e6720736f6d652076616c7565736f0a" | xxd -r -p
testing some valueso
Run Code Online (Sandbox Code Playgroud)
如果你需要的是字符表示(不是十六进制),你可以这样做:
$ 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
Run Code Online (Sandbox Code Playgroud)
要么:
$ 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
Run Code Online (Sandbox Code Playgroud)
看起来您想将十六进制字符串转换为字节。xxd 需要一个起点(因为它用于修补二进制文件等)
string="626c610a"
echo "0: $string" | xxd -r
Run Code Online (Sandbox Code Playgroud)
xxd 也会默默地跳过任何无效的十六进制,因此如果您得到空输出,请检查您的数据。
| 归档时间: |
|
| 查看次数: |
11774 次 |
| 最近记录: |