linux二进制数据16进制数据转换,[轉]16进制字符文本/二进制文件迷你互转器
编译工具:TC3 VC6
语法:
txt2bin 文本文件名 二进制文件名 [/killline|n]
/killline 去除回车换行
n 以每隔n对16进制字符添加一个回车换行
例子:
txt2bin file.txt file.bin
txt2bin file.txt file.bin /killline
txt2bin file.txt file.bin 10
bin2txt 二进制文件名 文本文件名 [/killline|n] [/lower]
/killline 去除回车换行
n 以每隔n个字节添加一个回车换行
/lower 以小写方式
例子:
bin2txt file.bin file.txt
bin2txt file.bin file.txt /killline
bin2txt file.bin file.txt 10
bin2txt file.bin file.txt 10 /lower
/***************** txt2bin.c 16进制字符文件转为二进制文件 ******************/
#include #include #include #include
void help()
{
printf("txt2bin 1.0 HexTextToBin convertor by
grub2linux\nSyntax :\n txt2bin textFile binFile [/killline|n]\n
textFile : text file name.\n binFile : binary file name.\n /killline :
do not conserve RETURN & LINEFEEDs in textFile.\n n : do
not conserve RETURN & LINEFEEDs in textFile.\n add a
RETURN & LINEFEED every n*2 characters.\n");
}
void main(int argc, char *argv[])
{
FILE *txt,*bin;
unsigned short dig;
unsigned char w[3];
unsigned long i=0;
unsigned long j=0;
unsigned char buf;
char *stopStr="\0";
unsigned long filesize;
int doLine=0;
w[2]=0;
switch(argc)
{
case 4 :
if(strcmp(strupr(argv[3]),"/KILLLINE")==0) doLine=-1;
else doLine=atoi(argv[3]);
case 3 :
if((txt=fopen(argv[1],"rb"))==NULL)
{
printf("File error : %s\n",argv[1]);
return;
}
if((bin=fopen(argv[2],"wb"))==NULL)
{
printf("File error : %s\n",argv[2]);
return;
}
break;
default :
help();
return;
}
filesize=filelength(fileno(txt));
while(i{
fread(&dig,2,1,txt);
i+=2;
// printf("%04x\n",dig);
if(dig==0x0A0D)
{
if(doLine==0)
fwrite("\x0D\x0A",2,1,bin);
}
else
{
memcpy(w,&dig,2);
buf=(unsigned char)strtol(w,&stopStr,16);
fwrite(&buf,1,1,bin);
j++;
if(doLine>0 && j%doLine==0) fwrite("\x0D\x0A",2,1,bin);
}
}
fclose(txt);
fclose(bin);
}
/***************** bin2txt.c 二进制文件转为16进制字符文件 *******************/
#include #include #include #include #include
void help()
{
printf("bin2txt 1.0 BinToHexText convertor by
grub2linux\nSyntax :\n bin2txt binFile textFile [/killline|n]
[/lower]\n binFile : binary file name.\n textFile : text file name.\n
/killline : do not conserve RETURN & LINEFEEDs in binFile.\n
n : do not conserve RETURN & LINEFEEDs in binFile.\n
add a RETURN & LINEFEED every n bytes.\n /lower : in lower
case.\n");
}
void main(int argc, char *argv[])
{
FILE *txt,*bin;
unsigned char dig;
unsigned char dig0A;
char w[3];
unsigned long i=0;
unsigned long j=0;
unsigned long filesize;
int doLine=0;
int letterCase=0;
w[2]=0;
switch(argc)
{
case 5 :
if(strcmp(strupr(argv[4]),"/LOWER")==0) letterCase=1;
else
{
help();
return;
}
case 4 :
if(strcmp(strupr(argv[3]),"/KILLLINE")==0) doLine=-1;
else if(strcmp(strupr(argv[3]),"/LOWER")==0) letterCase=1;
else doLine=atoi(argv[3]);
case 3 :
if((bin=fopen(argv[1],"rb"))==NULL)
{
printf("File error : %s\n",argv[1]);
return;
}
if((txt=fopen(argv[2],"wb"))==NULL)
{
printf("File error : %s\n",argv[2]);
return;
}
break;
default :
help();
return;
}
filesize=filelength(fileno(bin));
while(i{
fread(&dig,1,1,bin);
i++;
if(dig==0x0D)
{
fread(&dig0A,1,1,bin);
i++;
if(dig0A==0x0A)
{
if(doLine==0)
fwrite("\x0D\x0A",2,1,txt);
}
else
{
if(letterCase==0)
sprintf(w,"%02X",dig);
else sprintf(w,"%02x",dig);
fwrite(w,2,1,txt);
j++;
if(doLine>0 && j%doLine==0) fwrite("\x0D\x0A",2,1,txt);
if(letterCase==0)
sprintf(w,"%02X",dig0A);
else sprintf(w,"%02x",dig0A);
fwrite(w,2,1,txt);
j++;
if(doLine>0 && j%doLine==0) fwrite("\x0D\x0A",2,1,txt);
// fseek(bin,-1L,1);
}
}
else
{
if(letterCase==0)
sprintf(w,"%02X",dig);
else sprintf(w,"%02x",dig);
fwrite(w,2,1,txt);
j++;
if(doLine>0 && j%doLine==0) fwrite("\x0D\x0A",2,1,txt);
// itoa((unsigned char)dig,w,16);
/*
itoa((unsigned char)(dig>>8),w,16);
strcpy(w,strupr(w));
fwrite(w,2,1,txt);
*/
}
}
fclose(txt);
fclose(bin);
}
linux二进制数据16进制数据转换,[轉]16进制字符文本/二进制文件迷你互转器相关推荐
- 用Matlab把 .txt文件中的16进制数据转换成2进制数据
问题描述 使用Matlab将.txt文本文件里面存放的16进制数据转换成2进制数据,放入一个新的.txt文件中.直接附代码解释,第一次发文章,仅为了练习使用和记录. clear; clc; fid = ...
- python二进制解码_Python3 二进制数据base64编解码
最近在搞阿里的物联网,其中使用到二进制数据透传,后台使用python,所以需要研究一下,二进制数据的传输问题. Python版本:3.6 设备端发送二进制数据: 7F 00 41 41 16 03 1 ...
- 微型计算机可以处理的二进制长度,可以处理的二进制数据长度是多少位
微型计算机中CPU进行算术运算和逻辑运算时,可以处理的二进制数据长度是32位.64位. CPU一次能并行处理的二进制位数为字长,字长总是8的整数倍,常用的字长为8位(早期).16位(早期).32位和6 ...
- 二进制数据与16进制字符串相互转化方法
二进制数据转化为16进制字符串(中间加的':'还有':'是为了查看下标,也可以自行去掉): 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 public st ...
- 将16进制字符串转化成内存二进制数据
在使用Ini文件的时候,发现不能向Ini文件中写入流数据.于是想了一种方法来写入流数据,其中用到了内存数据转16进制,和16进制转成 内存二进制数据,前面的内存数据转16进制的已经写过,可以看看我以前 ...
- Linux shell 不同进制数据转换(二进制,八进制,十六进制,base64)
原文: http://www.cnblogs.com/chengmo/archive/2010/10/14/1851570.html shell可以在不调用第3方命令,表示不同进制数据.这里总结以下表 ...
- 小技巧(1):Linux 下查看进程依赖,不同的16进制编辑器,与关掉Windows驱动签名认证
最近又学到了一些零零碎碎的 Linux.Windows 命令,和一些可能今后会用得着的小技巧,怕自己忘记,所以把它们写在博客里面提醒一下自己,免得到时候再花费大量时间去百度.Google 找文章. L ...
- 有符号二进制乘法及MATLAB有符号数16进制到2进制的转换问题
目录 有符号数乘法 MATLAB有符号16进制转2进制 有符号数乘法 在服务器中搭建乘法器验证波形时,多比特二进制数手算比较麻烦,所以导入matlab计算正确的输出结果. 此时要注意乘法器的特性,举个 ...
- 16进制转8进制 两种方法先转二进制在转8进制或先转10进制在转8进制
问题描述 给定n个十六进制正整数,输出它们对应的八进制数. 输入格式 输入的第一行为一个正整数n (1<=n<=10). 接下来n行,每行一个由09.大写字母AF组成的字符串,表示要转换的 ...
最新文章
- class path resource [beans.xml] cannot be opened because it does not exist
- php_yaf 安装
- 用C++写一个简单的服务器和客户端
- WIN7 下安装 SQL Server 2000 兼容性问题
- 典型的Linux系统启动需要完成的服务
- java webapps路径_java 获取服务器端的webapps路径 | 学步园
- Qt之QAbstractItemView视图项拖拽(二)
- C++ 易混淆的概念-sizeof和strlen、char* 和char[]、*p++和(*p)++
- asp.net Forums2.0修改密码后无法登陆问题——都是Cache惹的祸
- CentOS 上MySQL报错Can't connect to local Mysql server through socket '/tmp/mysql.scok' (111)
- dlna 斐讯r1怎么用_斐讯R1智能(蓝牙)音箱固件升级教程
- 高等数学张宇18讲 第十四讲 数学一、数学二专题内容
- 物联网终端安全系列(之三) -- 物联网终端安全解决方案概述
- C1能力认证训练题解析 _ 第一部分 _ 计算机通识
- 电脑num lock键如何默认锁定
- 计算机键盘音乐 卡农,巴赫键盘音乐
- 假期无聊,我用傅里叶变换做了一个频率计,吉他定调口哨定音,样样好使!
- 磁盘列阵技术介绍及其部署
- 继续魔改TCP BBR
- 怎样更改计算机管理员用户名,Administrator怎么修改账户用户名教程