大小端读写函数
//按小端法从ptr地址处获取一个字
static WORD ld_word (const BYTE* ptr)//按小端法从ptr地址处获取一个字 /* Load a 2-byte little-endian word */
{
WORD rv;
rv = ptr[1];
rv = rv << 8 | ptr[0];
return rv;
}
//按小端法从ptr地址处获取一个双字
static DWORD ld_dword (const BYTE* ptr) //按小端法从ptr地址处获取一个双字/* Load a 4-byte little-endian word */
{
DWORD rv;
rv = ptr[3];
rv = rv << 8 | ptr[2];
rv = rv << 8 | ptr[1];
rv = rv << 8 | ptr[0];
return rv;
}
#if FF_FS_EXFAT//exfat文件系统,按小端模式读8个字节。
static QWORD ld_qword (const BYTE* ptr) /* Load an 8-byte little-endian word */
{
QWORD rv;
rv = ptr[7];
rv = rv << 8 | ptr[6];
rv = rv << 8 | ptr[5];
rv = rv << 8 | ptr[4];
rv = rv << 8 | ptr[3];
rv = rv << 8 | ptr[2];
rv = rv << 8 | ptr[1];
rv = rv << 8 | ptr[0];
return rv;
}
#endif
#if !FF_FS_READONLY//非只读模式
/* Store a 2-byte word in little-endian */
static void st_word (BYTE* ptr, WORD val)//以小端模式存储2个字节
{
*ptr++ = (BYTE)val; val >>= 8;
*ptr++ = (BYTE)val;
}
/* Store a 4-byte word in little-endian */
static void st_dword (BYTE* ptr, DWORD val)//以小端模式存储4个字节
{
*ptr++ = (BYTE)val; val >>= 8;
*ptr++ = (BYTE)val; val >>= 8;
*ptr++ = (BYTE)val; val >>= 8;
*ptr++ = (BYTE)val;
}
#if FF_FS_EXFAT//exfat文件系统,按小端法存储8个字节。
static void st_qword (BYTE* ptr, QWORD val) /* Store an 8-byte word in little-endian */
{
*ptr++ = (BYTE)val; val >>= 8;
*ptr++ = (BYTE)val; val >>= 8;
*ptr++ = (BYTE)val; val >>= 8;
*ptr++ = (BYTE)val; val >>= 8;
*ptr++ = (BYTE)val; val >>= 8;
*ptr++ = (BYTE)val; val >>= 8;
*ptr++ = (BYTE)val; val >>= 8;
*ptr++ = (BYTE)val;
}
#endif
#endif /* !FF_FS_READONLY */