1

有人能解释一下 ROS 的 rosparam 命令如何转换输入和输出值吗?
具体来说,我对以下由前导零引起的命令集感到惊讶:

$ rosparam set mytest 00111
$ rosparam get mytest
73

这不是从二进制转换,所以这里发生了什么?

4

1 回答 1

1

这实际上是一个 bash 特性,ROS 在使用命令行界面时继承了该特性。从bash 手册的算术评估部分

以 0 开头的常量被解释为八进制数。

您可以在完全不涉及 ROS 的情况下重现此行为:

$ echo $((00111))
73 #  73 = 64 + 8 + 1

如果要将数字转换为十进制而不是八进制,请在将值转换为整数之前去掉前导零(请参阅此 SO answer

$ echo $((10#00111))
111
于 2021-12-19T23:05:38.087 回答