微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如果支持的最大数据类型为32位长,如何将以HEX格式保存的7字节数字转换为十进制数字?

如何解决如果支持的最大数据类型为32位长,如何将以HEX格式保存的7字节数字转换为十进制数字?

我正在尝试从mifare Classic卡向屏幕以十进制格式输出7字节的唯一标识符(UID)。

我已经阅读并将UID拆分为包含高半字节和低半字节的HEX数组。因此,我有一个包含14个元素的数组。如果我有64位数据类型可用,我通常会遍历数组中的元素,并将它们乘以相应的值,以获得十进制格式的UID。然后,我会将UID的每个数字分成一个数组,以输出到屏幕。

问题在于,支持8051处理器的Keil C51编译器上可用的最大支持数据类型是32位。

有人可以向我指出正确的方向吗?

具有2字节UID的伪代码示例:

UID = 0x1234,UID_array = [0x01 0x02 0x03 0x04],Decimal_value = 0,Decimal_digit[5] = 0

Decimal_value += 0x1000 * 0x01
Decimal_value += 0x100 * 0x02
Decimal_value += 0x10 * 0x03
Decimal_value += 1 * 0x04

Decimal_value = 4369

Decimal_digit[0] = (uint8)((Decimal_value/10000) % 10)

Decimal_digit[1] = (uint8)((Decimal_value/1000) % 10)

Decimal_digit[2] = (uint8)((Decimal_value/100) % 10)

Decimal_digit[3] = (uint8)((Decimal_value/10) % 10)

Decimal_digit[4] = (uint8)(Decimal_value % 10)

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。