1

我正在使用“dc”命令将十六进制转换为十进制

dc -e "16i$1p"

问题是它会破坏大量的输出

795717178255658627448611597034913344160729841275756347904742363029055\
1952200534008528895

如何防止这种行为?是否有一个选项或参数可以通过来禁用它?

4

2 回答 2

0

这个问题既古老又冷酷,但我认为应该注意的是,在 GNUdc和的较新版本上bc,可以通过环境变量禁用此功能

n=FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
n+=FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF

DC_LINE_LENGTH=0 dc -e "16i${n}p"

BC_LINE_LENGTH=0 bc <<<"ibase=16; $n"
于 2016-12-30T12:04:37.263 回答
0

bc 似乎也在做同样的事情。此规范中还列出了 70 个字符的限制:

http://pubs.opengroup.org/onlinepubs/000095399/utilities/bc.html

在我的脑海中,只是后处理:

echo "ibase=16; FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | bc | perl -pe's/\\\n//'

此处建议其他选项:https ://unix.stackexchange.com/questions/13676/how-can-you-combine-all-lines-that-end-with-a-backslash-character

于 2015-11-05T22:18:19.580 回答