如何在保持 UNIX 格式的同时将 `ros::Time` 转换为字符串?
How to convert `ros::Time` to string while keeping the UNIX format?
上下文:
我有名称为 UNIX 时间戳的图像文件,例如1341846314.694004.png
。这些名称对应于发布图像的 ROS .bag 文件的消息 header.stamp
。
使用 Python 我为每个图像生成了边界框文件,并使用相同的模式来命名它们,例如1341846314.694004_bb.txt
.
问题:
我无法将类型为 ros::Time
且格式为 UNIX 时间的 header.stamp
转换为 C++ 中的字符串。
到目前为止,我阅读的所有资源都告诉我要么使用 header.stamp.toSec()
(这没有帮助,因为相关信息正在丢失),要么将其转换为其他时间格式然后我又可以从中转换为字符串(这又不是因为我需要 UNIX 格式)。
时间 类 在 Python and C++ 中提供秒和纳秒字段。所以你可以使用它们并将它们组合成一个字符串:
Python:
stamp = rospy.Time.now()
print(str(stamp.secs) + '.' + str(stamp.nsecs))
C++:
ros::Time stamp = ros::Time::now();
std::stringstream ss;
ss << stamp.sec << "." << stamp.nsec;
std::cout << ss.str() << std::endl;
两种实现的输出如下:
1612707880.149451971
上下文:
我有名称为 UNIX 时间戳的图像文件,例如1341846314.694004.png
。这些名称对应于发布图像的 ROS .bag 文件的消息 header.stamp
。
使用 Python 我为每个图像生成了边界框文件,并使用相同的模式来命名它们,例如1341846314.694004_bb.txt
.
问题:
我无法将类型为 ros::Time
且格式为 UNIX 时间的 header.stamp
转换为 C++ 中的字符串。
到目前为止,我阅读的所有资源都告诉我要么使用 header.stamp.toSec()
(这没有帮助,因为相关信息正在丢失),要么将其转换为其他时间格式然后我又可以从中转换为字符串(这又不是因为我需要 UNIX 格式)。
时间 类 在 Python and C++ 中提供秒和纳秒字段。所以你可以使用它们并将它们组合成一个字符串:
Python:
stamp = rospy.Time.now()
print(str(stamp.secs) + '.' + str(stamp.nsecs))
C++:
ros::Time stamp = ros::Time::now();
std::stringstream ss;
ss << stamp.sec << "." << stamp.nsec;
std::cout << ss.str() << std::endl;
两种实现的输出如下:
1612707880.149451971