【发布时间】:2022-01-21 11:30:39
【问题描述】:
有人能解释一下 ROS 的 rosparam 命令如何转换输入和输出值吗?
具体来说,我对以下由前导零引起的命令集感到惊讶:
$ rosparam set mytest 00111
$ rosparam get mytest
73
这不是从二进制转换,所以这里发生了什么?
【问题讨论】:
有人能解释一下 ROS 的 rosparam 命令如何转换输入和输出值吗?
具体来说,我对以下由前导零引起的命令集感到惊讶:
$ rosparam set mytest 00111
$ rosparam get mytest
73
这不是从二进制转换,所以这里发生了什么?
【问题讨论】:
这实际上是一个 bash 功能,ROS 在使用命令行界面时继承了该功能。来自arithmetic evaluation section of the bash manual:
以 0 开头的常量被解释为八进制数。
您可以在完全不涉及 ROS 的情况下重现此行为:
$ echo $((00111))
73 # 73 = 64 + 8 + 1
如果要将数字转换为十进制而不是八进制,请在将值转换为整数之前去掉前导零(请参阅this SO answer )
$ echo $((10#00111))
111
【讨论】: