• 如何将四个一字节的数转换为一个四字节数


          最近在研究图像显示这块,想在/dev/graphics/fb0上显示图像,在研究时需要一个图片的十六进制数值,找了好久,找了一个软件可以实现该功能。

        Img2Lcd.exe 这个软件可以实现,一张图片转换后的结果如下:

    const unsigned char gImage_1233[128640] = { /* 0X00,0X20,0XF0,0X00,0X86,0X00,0X00,0XE4, */
    0X5D,0X31,0X12,0X00,0X5D,0X31,0X12,0X00,0X5D,0X31,0X12,0X00,0X5D,0X31,0X0F,0X00,
    0X5E,0X31,0X10,0X00,0X5D,0X2E,0X12,0X00,0X5D,0X2F,0X11,0X00,0X5E,0X31,0X0F,0X00,
    0X62,0X33,0X14,0X00,0X64,0X36,0X16,0X00,0X67,0X39,0X17,0X00,0XA3,0X42,0X02,0X00,
    0XA4,0X42,0X02,0X00,0XA4,0X42,0X02,0X00,0XA4,0X41,0X03,0X00,0XA7,0X42,0X03,0X00,
    0XA3,0X42,0X06,0X00,0XA5,0X44,0X02,0X00,0XAB,0X41,0X04,0X00,0XA7,0X44,0X03,0X00, 。。。。};

    看到了吗?是char类型的,可是我要的是int类型的,可惜这个软件没有这个功能,如何是好呢。于是自己写了个简单的文件操作代码,在这个转换基础之上转换在做处理,代码如下:

     1 /*************************************************************************
     2     > File Name: main.c
     3     > Author: winfu
     4     > Mail: wenfuandyou@163.com 
     5     > Created Time: Thu 07 Jul 2016 10:08:36 AM CST
     6  ************************************************************************/
     7 #include<stdio.h>
     8 #include<string.h>
     9 #include <sys/types.h>
    10 #include <sys/stat.h>
    11 #include <fcntl.h>
    12 
    13 int main()
    14 {
    15     int fd1 = open("./file.txt",O_RDWR);
    16     int fd2 = open("./file_bak.txt",O_CREAT|O_WRONLY,0666);
    17     int num;
    18     if(fd1 < 0 || fd2 < 0)
    19     {
    20         perror("open");
    21         return -1;
    22     }
    23     ssize_t res = 1;
    24     char buf4[4] = {0};
    25     char buf2[2] = {0};
    26     int i = 0;
    27     char c = ',';
    28     char cn = '
    ';
    29     printf("------------
    ");
    30     do{
    31             i++;
    32             res = read(fd1,buf4,sizeof(buf4));
    33             printf("%s",buf4);
    34             write(fd2,buf4,sizeof(buf4));
    35             
    36             lseek(fd1, 3,SEEK_CUR);
    37             res = read(fd1,buf2,sizeof(buf2));
    38             printf("%s",buf2);
    39             write(fd2,buf2,sizeof(buf2));
    40             
    41             lseek(fd1, 3,SEEK_CUR);
    42             res = read(fd1,buf2,sizeof(buf2));
    43             printf("%s",buf2);
    44             write(fd2,buf2,sizeof(buf2));
    45             
    46             lseek(fd1, 3,SEEK_CUR);
    47             res = read(fd1,buf2,sizeof(buf2));
    48             printf("%s	",buf2);
    49             write(fd2,buf2,sizeof(buf2));
    50             write(fd2,&c,1);
    51             lseek(fd1, 1,SEEK_CUR);
    52             num++;
    53             if(i==4)
    54             {
    55                 i = 0;
    56                 printf("
    ");
    57                 write(fd2,&cn,1);
    58                 lseek(fd1, 1,SEEK_CUR);
    59             }
    60     }while(res);
    61     printf("------------
    ");
    62     printf("num = %d
    ",num);
    63     close(fd1);
    64     close(fd2);
    65     return 0;
    66 }

    将转Img2Lcd.exe转换好的文件去掉头尾 存放到file.txt文档中,将file文档放在该程序的路径下,最后生成file_bak.txt,该文件存放的是转换后的数据:

    0X5D311200,0X5D311200,0X5D311200,0X5D310F00,
    0X5E311000,0X5D2E1200,0X5D2F1100,0X5E310F00,
    0X62331400,0X64361600,0X67391700,0XA3420200,
    0XA4420200,0XA4420200,0XA4410300,0XA7420300,
    0XA3420600,0XA5440200,0XAB410400,0XA7440300,
    0XA9440300,0XAC420500,0XA9440300,0XA8440300,
    0XA9450400,0XA3460400,0XAC460500,0XA9450900 ….

    这个数据正好是我想要的4字节。

      

  • 相关阅读:
    C#wenbbrowser浏览器的详细用法
    js 通过window.external 调用 winform中的方法
    找到webbrowser中的控件句柄发送消息-转
    设置ie cookie 转
    XML的SelectNodes使用方法以及XPath --转
    JQuery AJAX 提交js数组
    Java数据库访问:DBHelper类
    调试运行过程中,位于try-catch中的异常代码是否中断的选项
    Eclipse中配置Tomcat并创建Web项目
    TypeScript: 应用级别的JavaScript开发
  • 原文地址:https://www.cnblogs.com/winfu/p/5650829.html
Copyright © 2020-2023  润新知