社区
C语言
帖子详情
.jpg文件转换成十六进制的文件?怎么转?
giffordguan
2005-02-18 02:17:55
谢谢啦,怎么转阿?
...全文
685
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用十六进制代码表示出来,怎么转过去啊?
jpg
图片
转
换成
十六进制
字符
文件
该程序主要用于将
jpg
图片的自己流
转
换为
十六进制
字符串 输入
文件
为in.
jpg
输出
文件
为in.txt
JPG
图片
转
化成
十六进制
数据的程序
在VS2010中用IFSTREAM来读取
JPG
文件
,然后用OFSTREAM来写入txt
文件
,txt
文件
输出
十六进制
数据(例.. FF D8 .... FF D9)
python使用百度OCR识别图片表格
在Python环境下,利用百度AI开放平台文字识别技术,对图片类表格进行识别,生成Excel
文件
,并下载到指定
文件
夹内。图片支持
jpg
/png/bmp格式,推荐使用
JPG
格式。步骤: 1、注册并登录百度AI开放平台 2、创建文字识别应用,并记下该应用的AppID、API Key和Secret Key。 3、安装OCR Python SDK。 4、在Pycharm中建立Python项目 5、编写Python代码 6、运行Python程序
VC++ 6.0 16进制
转
JPG
,
JPG
转
十六进制
将
JPG
以二进制
文件
读出,并用
十六进制
显示到文本框; 将文本框中的
十六进制
数据
转
换成
JPG
图片
文件
; 并显示图片,图片显示采用GDI+库。
十六进制
字符串文本
转
换成
字符流
解决了在摄像头调试过程中,将摄像头拍的照片通过串口上传至串口助手保存时, ...
十六进制
字符串文本存放到in.txt中,该程序将其
转
换成
图片in.
jpg
其中输入文档为“in.txt”,输出
文件
为“in.
jpg
”
C语言
69,335
社区成员
243,078
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章