【发布时间】:2016-03-28 20:20:21
【问题描述】:
我有这段代码可以从 EEPROM 写入和写入 4 位数字。
For Ex: 2356
代码;
void WritePassToEEPROM(uint16_t pass)
{
EEPROMWrite(0000,(pass%100));
EEPROMWrite(0001,(pass/100));
}
uint16_t ReadPassFromEEPROM()
{
return (EEPROMRead(0001)*100 + EEPROMRead(0000));
}
Write_Pass_To_EEPROM() 函数写入 2 个地址 0000 和 0001。对于2356,2356%100 是 56 和 2356/100 是 23。因此,在地址0000 将是 56,在地址0001 它将是23。
在阅读EEPROM_Read(0000) 时将返回34 和EEPROM_Read(0001)*100 将返回2300。 2300 + 56 是 2356。
但是如果我需要写5 数字号码,例如65238,我应该怎么做。
【问题讨论】:
-
为什么要这样浪费每个字节的 61%?
-
为什么使用十进制算术?您确实知道 16 位(两个字节)作为无符号整数可以包含
0和65535(含)之间的值。 -
如果他想存储
99999之类的东西(16位太少,32位太多),那就去24位什么的……或者他必须处理使用一些可与 BCD 配合使用的旧硬件/软件?