繁体   English   中英

将base64数据转换为十进制

[英]Convert base64 data into decimal

CANMIC_BASE64_DATA="FxEYEhkTGhQbFRwWIQcBCAIJAwoECwUMBjEHAQgCCQMKBAsFDAYAgICAgICAgICAgICAAICAgICAgICAgICAgAu003du003d"
CANMIC_HEX_DATA=$(base64 -d -i <<<$CANMIC_BASE64_DATA | hexdump -v -e '/1 "%02x," ')

我在CANMIC_BASE64_DATA*获取了十六进制数据,然后将该数据存储到数组中

array_len=${#array[@]}

一旦将其存储到数组中,它将存储为十进制。 但是我是应该只在数组中使用十六进制。 我需要将base64转换为类似于CANMIC_HEX_DATA转储的十进制。

给定您的base64编码字符串,您可以将每个字节分配给一个数组。

您可以为数组分配十六进制值:

arr1=($(base64 -d <<< "FxEYEhkTGhQbFRwWIQcBCAIJAwoECwUMBjEHAQgCCQMKBAsFDAYAgICAgICAgICAgICAAICAgICAgICAgICAgAu003du003d" | hexdump -v -e '/1 "0x%02x " '))
printf "%s" "${arr1[0]}"
0x17
printf "%d" "${arr1[0]}"
23
printf "%x" "${arr1[0]}"
17

您可以为数组分配十进制值:

arr2=($(base64 -d <<< "FxEYEhkTGhQbFRwWIQcBCAIJAwoECwUMBjEHAQgCCQMKBAsFDAYAgICAgICAgICAgICAAICAgICAgICAgICAgAu003du003d" | hexdump -v -e '/1 "%02d " '))
$ printf "%s" "${arr2[0]}"
23
$ printf "%d" "${arr2[0]}"
23
$ printf "%x" "${arr2[0]}"
17

唯一的区别是hexdump格式。

请注意,您不能直接使用变量处理二进制文件,因为外壳会拒绝接受它。

例如,使用bash尝试var="$(echo -e "\\x00")"将导致错误bash: warning: command substitution: ignored null byte in input

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM