linux read

简书成研 2016-06-27 10:46:04
4 79 ef ab 2 0 0 0 4 0 0 0 41 1f 14 fe
engine: 0 speed: 0 time: 5374
4 79 ef ab 2 0 0 0 4 0 0 0 41 1f 14 fe
engine: 0 speed: 0 time: 5374
4 79 ef ab 2 0 0 0 4 0 0 0 41 1f 14 ff
engine: 0 speed: 0 time: 5375
4 79 ef ab 2 0 0 0 4 0 0 0 41 1f 15 0
engine: 0 speed: 0 time: 336

4 79 ef ab 2 0 0 0 4 0 0 0 41 1f 15 00
这个地方在read的时候,末尾的0少读取了一个, 但是是发送了的,如何解决?

...全文
75 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
赵4老师 2016-06-27
  • 打赏
  • 举报
回复
The following example reads data from the file associated with the file descriptor fd into the buffer pointed to by buf. #include <sys/types.h> #include <unistd.h> ... char buf[20]; size_t nbytes; ssize_t bytes_read; int fd; ... nbytes = sizeof(buf); bytes_read = read(fd, buf, nbytes); ...
void HexDump(char *buf,int len,int addr) {
    int i,j,k;
    char binstr[80];

    for (i=0;i<len;i++) {
        if (0==(i%16)) {
            sprintf(binstr,"%08x -",i+addr);
            sprintf(binstr,"%s %02x",binstr,(unsigned char)buf[i]);
        } else if (15==(i%16)) {
            sprintf(binstr,"%s %02x",binstr,(unsigned char)buf[i]);
            sprintf(binstr,"%s  ",binstr);
            for (j=i-15;j<=i;j++) {
                sprintf(binstr,"%s%c",binstr,('!'<buf[j]&&buf[j]<='~')?buf[j]:'.');
            }
            printf("%s\n",binstr);
        } else {
            sprintf(binstr,"%s %02x",binstr,(unsigned char)buf[i]);
        }
    }
    if (0!=(i%16)) {
        k=16-(i%16);
        for (j=0;j<k;j++) {
            sprintf(binstr,"%s   ",binstr);
        }
        sprintf(binstr,"%s  ",binstr);
        k=16-k;
        for (j=i-k;j<i;j++) {
            sprintf(binstr,"%s%c",binstr,('!'<buf[j]&&buf[j]<='~')?buf[j]:'.');
        }
        printf("%s\n",binstr);
    }
}

69,371

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧