zoukankan      html  css  js  c++  java
  • 数据输出十六进制格式

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

    #define MAX_PATH 256

    int strch_index_r(const char *str, const char ch)
    {
    char *tmp=(char*)str+strlen(str)-1;

    while(tmp!=str && *tmp!=ch && tmp--);

    return tmp-str;
    }

    int data_file_size(const char *path)
    {
    int ret=0;
    FILE *read=NULL;

    read=fopen(path, "rb");
    if(!read)return 0;
    fseek(read, 0, SEEK_END);
    ret=ftell(read);
    fclose(read);

    return ret;
    }

    int data_read(const char *path, char *buf, const int size, int* out)
    {
    int ret=0;
    FILE *read=NULL;

    if(!path || !buf || size<=0)return 0;

    read=fopen(path, "rb");
    if(!read)return 0;

    ret=fread(buf, 1, size, read);
    fclose(read);

    if(out)*out=ret;

    return ret;
    }

    char* ch2hex(const unsigned char ch, char *dest)
    {
    int tmp=0;

    if(ch<16)
    {
    *dest='0';
    if(ch>9)
    *(dest+1)='A'+ch-10;
    else
    *(dest+1)='0'+ch;
    }
    else
    {
    tmp=ch/16;
    if(tmp>9)
    *dest='A'+tmp-10;
    else
    *dest='0'+tmp;
    tmp=ch%16;
    if(tmp>9)
    *(dest+1)='A'+tmp-10;
    else
    *(dest+1)='0'+tmp;
    }

    return dest;
    }

    int data_write_hex(const char *path, const char *buf, int size, const char *symbol)
    {
    int ret=0;
    char bol[16]={0};
    char hex[3]={0};
    FILE *write=NULL;
    int line=size>16?16:size;
    char flags=0;

    if(!path || !buf || size<0)return 0;

    if(symbol)strcpy(bol,symbol);

    do
    {
    write=fopen(path, "w");
    if(!write)break;
    if(size==0)break;

    while(ret<size-1)
    {
    ch2hex(*(buf+ret), hex);

    // if(flags&&flags%(line-1)==0)fprintf(write, "%s%s", "0x", hex);
    if(flags&&flags%line==0){fprintf(write,"%s","\n");flags=-1;}
    else fprintf(write, "%s%s%s", "0x", hex,bol);
    flags++;
    ret++;
    }
    ch2hex(*(buf+ret), hex);
    fprintf(write, "%s%s", "0x", hex);
    } while (0);

    if(write)fclose(write);

    return ret;
    }

    int data_hex_file(const char* spath, const char* dpath, const char* symbol)
    {
    int ret=0;
    int size=data_file_size(spath);
    char *buf=NULL;
    char *path;

    if(dpath)
    {
    int len=strlen(dpath)+5;
    path=(char*)malloc(len);
    strcpy(path, dpath);
    }
    else
    {
    int len=strlen(spath)+5;
    path=(char*)malloc(len);
    memset(path, 0, len);
    strncpy(path, spath, strch_index_r(spath, '.'));
    strcat(path, ".hex");
    }

    buf=(char*)malloc(size);
    if(!buf)return 0;

    data_read(spath, buf, size, NULL);
    ret=data_write_hex(path, buf, size, symbol);

    if(buf){free(buf);buf=NULL;}
    if(path){free(path);path=NULL;}

    return ret;
    }

    void data_handle(int num, char ** ppobj)
    {
    char path[MAX_PATH]={0};
    char file[MAX_PATH]="mm_logo.jpg";

    printf("ÇëÊäÈëÎļþÃû:");
    gets(file);

    strncpy(path, *ppobj, strch_index_r(*ppobj, '\\')+1);
    strcat(path,file);
    data_hex_file(path, NULL, ", ");
    }

    int main(int argc, char **argv)
    {
    data_handle(argc, argv);

    // printf("%d\n", '9');
    return 0;
    }

  • 相关阅读:
    JS中的原型规则与原型链
    JS中的“==”与强制类型转换
    协作开发中常用的Git命令小结
    JavaScript变量类型检测总结
    IDEA IntelliJ常用设置以及快捷键(转)
    Spring 发送 Email
    SSM框架的整合思路&功能实现
    使用Eclipse把java文件打包成jar 含有第三方jar库的jar包
    基于CDH5.x 下面使用eclipse 操作hive 。使用java通过jdbc连接HIVESERVICE 创建表
    Volley源码学习笔记
  • 原文地址:https://www.cnblogs.com/ccmfc/p/2299603.html
Copyright © 2011-2022 走看看