社区
C语言
帖子详情
.jpg文件转换成十六进制的文件?怎么转?
giffordguan
2005-02-18 02:17:55
谢谢啦,怎么转阿?
...全文
782
18
打赏
收藏
.jpg文件转换成十六进制的文件?怎么转?
谢谢啦,怎么转阿?
复制链接
扫一扫
分享
举报
写回复
配置赞助广告
用AI写文章
18 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
寻开心
2005-02-21
打赏
举报
回复
前面给的是示意性的代码,没有调试
ssprintf出错是因为再次读取后,ptemp2指针没有恢复到buffer2的首地址
一个二进制字符是8位,写成16进制占据2位,再加入一个空格嘛
比如,字符串AB ascii是 0x65 和 0x66,, 写成16进制就是“65 66 ”占据6个字节了
lona_ma
2005-02-19
打赏
举报
回复
为什么十六进制的buffer会比二进制的达3倍呢?
lona_ma
2005-02-19
打赏
举报
回复
sprintf 会内存出错,怎么回事啊?
寻开心
2005-02-18
打赏
举报
回复
unsigned char buffer[Buffer_Size+1]; // 保存的是从磁盘读出的二进制数据,+1做保护
unsigned char buffer2[Buffer_Size*3+1]; // 保存要转换的字符串,+1做保护
.....
int nLen = fread(buffer, sizeof(char), Buffer_Size, fin);
unsigned char * pTemp2 = buffer2;
while(nLen==Buffer_Size)
{
for (int j=0; j<nLen; j++ ) {
ssprintf(pTemp2, "%02X ", buffer[j]);
pTemp2 += 3;
}; // 这样就把二进制的数据转换成为16进制的字符串,并且存储到buffer1当中了
fwrite( buffer1, sizeof(char), nLen*3, fout);
nLen = fread(buffer, sizeof(char), Buffer_Size, fin);
}
if (nLen)
{
for (int j=0; j<nLen; j++ ) {
ssprintf(pTemp2, "%02X ", buffer[j]);
pTemp2 += 3;
}; // 这样就把二进制的数据转换成为16进制的字符串,并且存储到buffer1当中了
fwrite( buffer1, sizeof(char), nLen*3, fout);
};
fclose(fin);
fclose(fout);
寻开心
2005-02-18
打赏
举报
回复
关于二进制方式打开,看fopen的说明函数吧
缺省的就是二进制方式
除非用_fmode()修改过
寻开心
2005-02-18
打赏
举报
回复
fwrite输出的就是二进制数据,不是字符串
所以你必须先把他们转换成为16进制的字符串数据然后再输出
unsigned char buffer[Buffer_Size+1]; // 保存的是从磁盘读出的二进制数据,+1做保护
unsigned char buffer2[Buffer_Size*3+1]; // 保存要转换的字符串,+1做保护
.....
int nLen = fread(...);
unsigned char * pTemp2 = buffer2;
while(nLen==Buffer_Size)
{
for (int j=0; j<Buffer_Size; j++ ) {
ssprintf(pTemp, "%02X ", buffer[j]);
pTemp2 += 3;
}; // 这样就把二进制的数据转换成为16进制的字符串,并且存储到buffer1当中了
fwrite( buffer1, sizeof(char), Buffer_Size*3, fout);
nLen = fread(。。。。);
}
if (nLen)
{
和上面类似的代码,把Buffer_Size全部替换成nLen即可
};
ckc
2005-02-18
打赏
举报
回复
fopen(文件名,"rb")
就可以用二进制打开读了
giffordguan
2005-02-18
打赏
举报
回复
fopen 什么叫做以二进制打开?
if ((fp=fopen(argv[1],"r+"))==NULL) /*打开源文件失败*/
{ printf("can not open source file\n");
exit(0);
}
input = fp;
giffordguan
2005-02-18
打赏
举报
回复
谢谢啦~~ 可是 怎么保证 fwrite 写出的是十六进制的啊? 小妹刚刚入门,见谅阿~~
寻开心
2005-02-18
打赏
举报
回复
写错了
把上面的1024数据都换成16,
len = fread(buffer, sizeof(char), 16, file);
用16的目的是仿照ultraedit的方式,每行16个读一次,这样效率也比较低,但是处理代码好做一些。
不考虑输出具体如何处理的时候,这个语句应该这样写
#define Buffer_Size 1024
// 缓冲大小,一次读取1k
unsigned char buffer[Buffer_Size];
int len = fread(buffer, sizeof(char), Buffer_Size, file);
while(len==Buffer_Size)
{
输出,后面可能还有
len = fread(buffer, sizeof(char), Buffer_Size, file);
};
if ( len ) {
输出,后面肯定没有了
}
fclose
寻开心
2005-02-18
打赏
举报
回复
处理的方式有问题
不应该这样做
用getc的效率极其低下
正确方法:
用fopen以二进制方式打开,不要用文本方式
读取二进制数据,应该用fread读入到缓冲区,根据fread返回的数值判断是否结束了
比如
unsigned char buffer[16];
int len = fread(buffer, sizeof(char), 1024, file);
while(len==16)
{
输出,后面可能还有
len = fread(buffer, sizeof(char), 1024, file);
};
if ( len ) {
输出,后面肯定没有了
}
fclose
giffordguan
2005-02-18
打赏
举报
回复
哦 还有 怎么把数据读入buffer? 各位大哥,帮帮小妹了。。
giffordguan
2005-02-18
打赏
举报
回复
我现在写的程序如下:
问题是,读完jpg的头文件就会终止,不会继续向下读,有什么办法吗?
for( ; (!feof(input)) ; )
// for (i=0; i<=0x54b0; i++) //5*16^3+4*16^2+11*16+0=20480+1024+176=21656
{
for(i=0; i<=16; i++)
{
ch = fgetc(input);
printf("0x%x", ch);
printf(", ");
fputc(ch,output);
}
printf("\n");
}
fclose(input); fclose(output);
sky911911
2005-02-18
打赏
举报
回复
关注ing。。。。。。。。
寻开心
2005-02-18
打赏
举报
回复
jpg文件在磁盘上本来就是一个二进制文件
这个问题等价于二进制文件的显示问题
首先按照二进制的方式把数据读入unsigned char类型
假定
unsigned char * pBuffer是数据的内容
你要16个一行的显示那么
pBuffer的长度是nLen
unsigned char * pTemp = pBuffer;
for ( int i=0; i<nLen>>4; i++ )
{
for ( int j=0; j<16; j++ )
sprintf("%02X ", *p(Temp++)); // 输出 A1 B2 10 3C 48 29 00 45 78 F3 EF F3 00 22 00
// 这种样式
sprintf("\n"); // 换行
}
for ( i=((nLen>>4) <<4); i<nLen; i++ )
sprintf("%02X", *pTemp++);
// 输出剩余的部分
fangyingjf
2005-02-18
打赏
举报
回复
问一下,.jpg的每一个象素点的rgb怎么得到啊
michaelz2001
2005-02-18
打赏
举报
回复
逐个字节读出来, 用fprintf写到一个txt文件里去
giffordguan
2005-02-18
打赏
举报
回复
用.txt文件写出来,吧.jpg用十六进制代码表示出来,怎么转过去啊?
MATLAB完成
十六进制
数据
转
换为
jpg
图像
十六进制
数组
转
换为
jpg
图像
十六进制
转
浮点数在线工具_在线CDR
转
AI、EPS
转
JPG
文件
的格式
转
换工具
设计达人www.shejidaren.com爱设计,爱分享设计达人严选好文,好素材,学设计,少走弯路对设计来说CDR
转
AI和EPS
转
JPG
、TIFF是稀有的
文件
格式
转
换,通常需要打开设计软件才能
转
换出来,但现在有了这款神器,即使没有安装设计软件也可以方便的
转
换了!功能特色:便利– 无需下载软件。只需选择您的
文件
,选择一种格式即可
转
换成
想要的
文件
。速度– 在10分钟内完成所有
转
换。格式...
【亲测免费】 16进制
转
JPG
图片工具
16进制
转
JPG
图片工具 【下载地址】16进制
转
JPG
图片工具 本仓库提供了一个实用的工具——**16进制
转
JPG
图片工具**。该工具能够将单片机采集的
十六进制
代码
转
换为
JPG
格式的图片。通过使用此工具,您可以轻松地将
十六进制
数据
转
换为可视化的图片,便于进一步的分析和处理 ...
【免费下载】 Hex-to-
JPG
:单片机取模后的
十六进制
转
图片工具
Hex-to-
JPG
:单片机取模后的
十六进制
转
图片工具 【下载地址】Hex-to-
JPG
单片机取模后的
十六进制
转
图片工具 Hex-to-
JPG
是一个实用的工具,用于将单片机取模后的
十六进制
数据
转
换为图片格式。这个工具对于需要将
十六进制
数据可视化的开发者来说非常有用,尤其是在嵌入式系统和硬件开发领域。 ...
JPG
图片
转
化为
十六进制
数据程序:高效
转
换工具助力开发
JPG
图片
转
化为
十六进制
数据程序:高效
转
换工具助力开发 去发现同类优质开源项目:https://gitcode.com/ 在数字图像处理与数据分析领域,有时我们需要将图片
文件
转
换为更为直观的数据格式,以方便后续的处理和分析。今天,我们就来为大家推荐一款名为“
JPG
图片
转
化为
十六进制
数据程序”的开源项目,它以其独特的技术优势和应用场景,成为开发者的得力助手。 项目介绍 “
JPG
图片
转
化为
十六进制
数据...
C语言
70,040
社区成员
243,245
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章