简单的来说,flash的写入是分块的。这种情况下如果单独的改写其中的一部分需要经过读取、擦除、写入的过程,也许你可以从这方面下手。
900K就是地址呗,HELLO就是数组呗,extern BOOLEAN EtNorFlashErase(UINT32 addr, UINT32 len)//addr擦除起始地址, len擦除长度
extern BOOLEAN EtNorFlashRead(UINT32 from, UINT32 len, void *buf)//from读取起始地址,len读取长度,*buf指向保存读取数据的数组的指针
extern BOOLEAN EtNorFlashWrite(UINT32 to, UINT32 len, void *buf)//from写入起始地址,len写入长度,*buf指向保存写入数据的数组的指针
#include<iostream>#include<string>
using namespace std
void title(){
string cor[4]={"╔","╗","╚","╝"},nor="║"
cout<<cor[0]<<"═════════"<<cor[1]
cout<<"\n"<<nor<<"身份证校验码计算器"<<nor<<"\n"
cout<<cor[2]<<"═════════"<<cor[3]
}
int main(){
char n[32]
unsigned short int a[17],s=0,num
bool j
title()
cout<<"\n 请输入17位身份证号码:"
do{
cin>>n
int i
for(i=0i<=31i++){
if(n[i]=='\0'){
num=i
break
}
}
if(num!=17){
system("cls") title()
cout<<" 号码无效。\n 请输入17位身份证号码:"
}
}
while(num!=17)
short m[17]={7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2}
for(int i=0i<=16i++){
a[i]=n[i]-'0'
a[i]*=m[i]
s+=a[i]
}
s%=11 char x
switch(s){
case 1: x='0' break case 2: x='X' break
case 3: x='9' break case 4: x='8' break
case 5: x='7' break case 6: x='6' break
case 7: x='5' break case 8: x='4' break
case 9: x='3' break case 10: x='2'break
case 0: x='1' break
}
system("cls") title()
cout<<"\n 计算结果:\n"
cout<<"┏━━━━━━━┳━━━━━━━━━┓"
cout<<"\n┃17位身份证号码┃"<<n
cout<<" ┃\n┠───────╂─────────┨"
cout<<"\n┃校验码┃"<<" "<<x<<"┃"
cout<<"\n┠───────╂─────────┨"
cout<<"\n┃完整身份证号码┃"<<n<<x<<"┃"
cout<<"\n┗━━━━━━━┻━━━━━━━━━┛\n\n 感谢使用!"
system("pause>nul")
}