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
谁能解释一下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