gpt4 book ai didi

linux - 将base64数据转换为十进制

转载 作者:太空宇宙 更新时间:2023-11-04 12:00:00 26 4
gpt4 key购买 nike

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 格式。

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

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

关于linux - 将base64数据转换为十进制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52866392/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com