用C++将十六进制ms-dos时间转换为普通十进制

这篇博客介绍了如何将古老的MS-DOS时间(16进制格式)转换为常规的十进制时间。文章提到了秒数需要乘以2,以及低位到高位的顺序问题,并提供了详细的转换步骤,包括将二进制数划分和转换。作者还分享了完成转换的C++代码,并附带了一个示例(530f7d17对应46/40/15 - 15/8/2021)。完整代码可在提供的附件中下载。
摘要由CSDN通过智能技术生成

ms-dos时间比较古老,常见于很多较为久远的算法程序中(比如pkzip)。百度了很多网页,都没找到有关dos时间格式转换的有用信息。于是在Google上搜索了一下,找到了MS-DOS时间(4字节)的格式信息,详见:https://documentation.help/WinHex-X-Ways/topic48.htm

具体信息截图如下:

 一、上图需要注意的有两点:

1.“秒”位置上的数据是除以2得到的,还原时需要乘以2

2.注意低位到高位的顺序问题:1010100........10010(共32bit,其中右边是低位,左边高位,比如上图中0-4bit就指的是最右边4位0010)

二、完成格式转换的流程很简单,大体有以下几步:

以530f7d17(实际为46/40/15 - 15/8/2021)为例

1.将从左到右的每一位都转换成4位二进制数,不够四位的左侧补0,之后得到32位二进制数

//convert original hex text to binary array in order
std::string b[16] = {"0000","0001&#
  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值