0
我有这样的代码,从写入和写入EEPROM为4位数字。 For Ex: 2356
EEPROM读取和写入5位
代码;
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%? –
为什么使用* decimal *算术?您知道,16位(两个字节)作为无符号整数可以包含'0'和'65535'(含)之间的值。 –
如果他想存储诸如'99999'(16位太少,32位太多)的东西,那就去24位或者其他东西......或者他可能需要处理一些旧的硬件/软件与BCD一起使用? – 3442