关于fscanf的运用,原理

问题遇到的现象和发生背景

为什么读取文件后的n是45呢?这个数是怎么转换的?

用代码块功能插入代码,请勿粘贴截图
#include  
int main(){
    FILE *fp;
    int n, a[2]={65,66};
    char ch;
    fp=fopen("d.dat","w");
    fprintf(fp,"%d%d",a[0],a[1]);
    fclose(fp);
    fp=fopen("d.dat","r");
    fscanf(fp,"%c",&ch);
    n=ch;
//    printf("%d\n",n);
    while(n!=0){
        printf("%d",n%10);
        n=n/10;
    }
    fclose(fp);
    return 0;
}

ch=6
将字符‘6’的ascii码值给n为54
逆序输出则为45