FAT长文件名 校验和算法 例子分析

 FAT长文件名 校验和算法 例子分析

#include <stdio.h>
#include <string.h>

unsigned char ChkSum (unsigned char *pFcbName)
{
short FcbNameLen;
unsigned char Sum;  //必须为无符号型.

Sum = 0;
for (FcbNameLen=11; FcbNameLen!=0; FcbNameLen--) {
// NOTE: The operation is an unsigned char rotate right
Sum = ((Sum & 1) ? 0x80 : 0) + (Sum >> 1) + *pFcbName++;
}
return (Sum);
}


int main(int argc, const char *argv[])
{
    if(argc != 2)
    {
        return -1;
    }

    unsigned char shortname[12] = {0};
    shortname[11] = 0;
    strncpy((char*)shortname,argv[1],11);
    printf("argv[1] = %s\n",argv[1]);
    printf("shortname = %s\n",shortname);


    printf("ChkSum  = 0x%02x\n",ChkSum(shortname) );

    return 0;
}

 

[user:test] ./a.out "ABCDEF~42  "  //42后面是两空格.我的文件全名是abcdefghijk3.2
argv[1] = ABCDEF~42 
shortname = ABCDEF~42 
ChkSum  = 0x2f

 

需要注意的是:FAT的文件名和其他参数一定都是无符号型的。

如果用有符号型,>>肯定会出错的了。


  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
FATFS是一个用于嵌入式系统的FAT文件系统模块,用于对存储设备上的文件进行管理。在FAT文件系统中,默认使用的是"8.3"命名规则,即文件名最多为8个字符,扩展名最多为3个字符。然而,FATFS也提供了对文件名的支持。 要使用文件名,首先需要在FATFS的配置文件中进行相应的设置。具体的配置方式可以参考FATFS的官方文档或开发者手册。 配置好后,在使用FATFS的API进行文件操作时,可以使用支持文件名的函数来创建、读取和写入文件。这些函数会自动处理文件名和短文件名之间的映射关系,使得开发者可以方便地操作文件名。 例如,使用FATFS提供的f_open函数来打开一个文件时,可以传入一个以NULL结尾的字符串参数,该参数即为要打开的文件名。如果文件名文件名,则FATFS会自动将其转换为相应的短文件名。类似地,对于其他文件操作函数,也可以按照相应的方式进行操作。 需要注意的是,文件名FAT文件系统中存储的方式与短文件名有所不同,通常需要占用更多的存储空间。因此,在使用FATFS的时候,需要根据实际情况综合考虑,选择适合的文件名命名方式。 总的来说,使用FATFS支持文件名的方法是在配置文件中进行相应的设置,然后使用提供的API函数进行文件操作即可。通过这种方式,可以在嵌入式系统中方便地使用文件名来管理文件。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值