16进制文本文件转二进制文件(C语言)
来源:互联网 发布:软件系统集成方案模板 编辑:程序博客网 时间:2024/06/18 13:39
写的一个小程序,将‘’6828046D441711160628597F7F7A633F00001A0A6B0000227C1309790D‘’这样的16进制字符串 转换为二进制存起来,注意因为写的仓促,所以并没有将空格滤过。
#include <stdio.h>
#include <string.h>#include <unistd.h>
static char trans(char * buffer);
int main(int argc, char** argv)
{
FILE * fp = 0;
FILE * fp_o = 0;
char buffer[256] = {0};
int size = 0;
int i = 0;
if(argc != 3)
{
printf("Please input filename.\n");
return 0;
}
fp = fopen(argv[1], "r");
if(fp == 0)
{
printf("Please input correct filename ,%s.\n",argv[1]);
return 0;
}
fp_o = fopen(argv[2], "wb");
if(fp_o == 0)
{
printf("Please input correct filename ,%s.\n",argv[2]);
return 0;
}
while(1)
{
memset(buffer, 0, sizeof(buffer));
size = fread(buffer, 1, sizeof(buffer), fp);
if(size <= 0)
{
fclose(fp);
fclose(fp_o);
return 0;
}
for(i = 0; i < size; i += 2 )
{
char temp = trans(&buffer[i]);
fwrite(&temp,sizeof(char),1,fp_o);
printf("temp :%02hhx buffer, i :%d , buffer[i]: %c, buffer [i+1]: %c,size : %d\n",temp,i,buffer[i],buffer[i+1],size);
}
}
return 0;
}
//将两个字符合成一个字符数据
static char trans(char * buffer)
{
char temp = 0;
for(int i = 0; i < 2; i++)
{
temp = temp << 4;
if(buffer[i] >= '0' && buffer[i] <= '9')
{
temp += buffer[i] - 0x30;
}
else if(buffer[i] >= 'a' && buffer[i] <= 'f')
{
temp += buffer[i] - 0x61 + 0x0a;
}
else if(buffer[i] >= 'A' && buffer[i] <= 'F')
{
temp += buffer[i] - 0x41 + 0x0a;
}
else
{
//cout << "get wrong value: "<< (int)buffer[i] << endl;
printf("get wrong value: %02X ,file: %s ,line: %d\n",buffer[i],__FILE__,__LINE__);
}
}
return temp;
}
阅读全文
0 0
- 16进制文本文件转二进制文件(C语言)
- C语言之文本文件与二进制文件
- C语言二进制文件和文本文件的区别
- 浅谈C语言中文本文件与二进制文件
- C语言中文本文件与二进制文件的区别是什么
- C语言中文本文件与二进制文件的区别是什么
- C语言中文本文件与二进制文件的区别
- C语言中二进制文件和文本文件的区别
- C语言编写的文本文件/二进制文件格式互换
- 122 C语言中文本文件与二进制文件的区别
- C/C++读写文本文件、二进制文件
- 文本文件转二进制文件的实现
- 【转】文本文件与二进制文件区别
- C语言中文本文件 和 二进制文件 流的区别(二)
- 128 C语言实现文件复制功能(包括文本文件和二进制文件)
- C#_FileStream读取文本文件和二进制文件
- C语言二进制文件读写
- c语言二进制文件加密
- java8 stream初试,map排序,list去重,统计重复元素个数,获取map的key集合和value集合
- 并行并发多线程
- 一维数组的常见查找法
- iOS五种本地缓存数据方式 96 GitHubPorter 2016.05.19 14:04 字数 3917 阅读 4579评论 1喜欢 8 前言 iOS本地缓存数据方式有五种: 1.直接写文件
- 源码阅读--package管理与应用安装
- 16进制文本文件转二进制文件(C语言)
- UE4 获得player id
- 海明纠错码
- Java Web提交任务到Spark Standalone集群并监控
- js计算字节长度
- log4j 1
- mvn 打包命令
- linker command failed with exit code 1 错误
- 一些小程序的个人总结(1)