【发布时间】:2020-12-17 02:20:43
【问题描述】:
我正在尝试使用值 .Hours、.Minutes、.Seconds 操作结构 atime1 的值,出于某种原因,我需要的值是这些变量的十六进制值,所有树是int。
然后我以不改变十六进制值的方式“连接”三个变量。 十六进制值:
aTime.Hours=0x13
aTime.Minutes=0x30
aTime.Seconds=0x15
ttt=0x133015
然后我需要将具有1257493 和0x133015 的dec 值的变量ttt 转换为133015 的十进制值。
这就是我不知道如何进行转换的地方。
到目前为止,这是我的代码。
HAL_RTC_GetTime(&hrtc, &aTime1, RTC_FORMAT_BCD);
HAL_RTC_GetDate(&hrtc, &aDate1, RTC_FORMAT_BCD);
ttt = aTime1.Hours;
ttt = ((ttt % 100000) * 256 + aTime1.Minutes);
ttt = ((ttt % 100000) * 256 + aTime1.Seconds);
【问题讨论】:
-
计算机不能使用十六进制的十进制值;它们都以二进制形式工作。十六进制和十进制是以更紧凑的方式向人类显示数字的两种方式。你应该知道十六进制是如何工作的:
0x133015是0x13 * 0x1000 + 0x30 * 0x100 + 0x15 * 0x1。同样的逻辑,十进制的133015是13 * 10000 + 30 * 100 + 15。我看不出0x133015和133015之间的关系。0x13是 19 小时,0x30是 48 分钟,0x15是 21 秒。