| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1178 人关注过本帖
标题:一次按4字节倍数读取,怎么优雅改成按读1字节倍数读取呢?
只看楼主 加入收藏
szchen2018
Rank: 2
等 级:论坛游民
帖 子:39
专家分:21
注 册:2021-11-20
结帖率:91.67%
收藏
已结贴  问题点数:20 回复次数:3 
一次按4字节倍数读取,怎么优雅改成按读1字节倍数读取呢?
程序代码:
int flash_read(UINT32 ptr_add,uint8_t *buffer,int Read_Lengh )
{
    UINT32 *ptr = (UINT32*)ptr_add;
    UINT32 buf = 0;
    int black = 0;
    int r_black = 0;
    black = Read_Lengh/4;

    while(black!= r_black)
    {
        buf = *ptr;
        buffer[0+r_black*4] = buf&0x000000ff;
        buffer[1+r_black*4] = buf>>8&0x000000ff;
        buffer[2+r_black*4] = buf>>16&0x000000ff;
        buffer[3+r_black*4] = buf>>24&0x000000ff;
        ptr++;

        printf("%02X %02X %02X %02X ",buffer[0+r_black*4],buffer[1+r_black*4],buffer[2+r_black*4],buffer[3+r_black*4]);
        r_black++;
        if ((r_black*4)%16==0)
            printf("\n");
    }
    printf("\n");
    return (r_black*4);
}
搜索更多相关主题的帖子: 读取 printf 字节 int buffer 
2022-04-05 20:29
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9025
专家分:54030
注 册:2011-1-18
收藏
得分:20 
4字节一读,才需要技巧;你现在一字节一读,那啥也不需要

另外,为什么不直接用 memcpy
2022-04-05 20:59
szchen2018
Rank: 2
等 级:论坛游民
帖 子:39
专家分:21
注 册:2021-11-20
收藏
得分:0 
回复 2楼 rjsp
如果Read_Lengh是4的倍数(4、8、12....),现在buffer数据是一次读4个字节吧,然后返回读到的数据长度r_black,难道我理解的不对嘛?
我想改成Read_Lengh是1就读1个字节,是2就读2个字节,是3就读3个字节.....,然后也返回读到的数据长度。
2022-04-05 21:17
szchen2018
Rank: 2
等 级:论坛游民
帖 子:39
专家分:21
注 册:2021-11-20
收藏
得分:0 
这样修改符合期望了
程序代码:
        uint8_t *ptr = ((uint8_t*)ptr_add);
        int black = 0;
        int r_black = 0;
        black = Read_Lengh;
                printf("Read_Lengh %d,black %d\n",Read_Lengh,black);
        while(black!= r_black)
        {
                buffer[0+r_black] = *(ptr++);
                printf("%02X ",buffer[0+r_black]);
                r_black++;
                if ((r_black)%16==0)
                        printf("\n");
        }
        printf("\n");
        return (r_black);
2022-04-23 09:39
快速回复:一次按4字节倍数读取,怎么优雅改成按读1字节倍数读取呢?
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.018816 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved