【问题标题】:How is rosparam calculating the of leading-zero integers?rosparam 如何计算前导零整数?
【发布时间】:2022-01-21 11:30:39
【问题描述】:

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

$ rosparam set mytest 00111
$ rosparam get mytest
73

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

【问题讨论】:

    标签: python ros rospy


    【解决方案1】:

    这实际上是一个 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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-07-14
      • 2022-01-15
      • 2014-02-16
      • 1970-01-01
      • 2022-12-03
      • 1970-01-01
      • 1970-01-01
      • 2020-10-28
      相关资源
      最近更新 更多