有人能解释一下 ROS 的 rosparam 命令如何转换输入和输出值吗?
具体来说,我对以下由前导零引起的命令集感到惊讶:
$ rosparam set mytest 00111
$ rosparam get mytest
73
这不是从二进制转换,所以这里发生了什么?
这实际上是一个 bash 特性,ROS 在使用命令行界面时继承了该特性。从bash 手册的算术评估部分:
以 0 开头的常量被解释为八进制数。
您可以在完全不涉及 ROS 的情况下重现此行为:
$ echo $((00111))
73 # 73 = 64 + 8 + 1
如果要将数字转换为十进制而不是八进制,请在将值转换为整数之前去掉前导零(请参阅此 SO answer )
$ echo $((10#00111))
111