rosparam 如何计算前导零整数的?

How is rosparam calculating the of leading-zero integers?

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

$ rosparam set mytest 00111
$ rosparam get mytest
73

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

这实际上是一个bash特性,ROS在使用命令行界面时继承了这一特性。来自 arithmetic evaluation section of the bash manual:

Constants with a leading 0 are interpreted as octal numbers.

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

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

如果您想将您的数字转换为十进制而不是八进制,请在将您的值转换为整数之前去除前导零(参见 这个 SO 回答 )

$ echo $((10#00111))
111