#include <stdio.h>
#include <stdlib.h>
//#include <unistd.h>
#include <string.h>
#include <errno.h>
#include <ctype.h>
/* since we're emitting C source, the comments containing the
ASCII dump better not contain C comment markers! */
void fixasc(char *asc, int len) {
int j;
for(j=0; j<(len-1); j++) {
/* slash-star or slash-slash become slash-dot */
if(asc[j] == '/' && (asc[j+1] == '*' || asc[j+1] == '/'))
asc[j+1] = '.';
/* star-slash becomes dot-slash */
else if(asc[j] == '*' && asc[j+1] == '/')
asc[j] = '.';
}
}
int main(int argc, char **argv) {
int i, j, count = 0;
char *p, asc[9];
FILE *in;
if(argc != 2) {
fprintf(stderr,
"#error usage: %s blobfile >blobfile.c 2>blobfile.h\n", argv[0]);
exit(1);
}
if( !(in = fopen(argv[1], "rb")) ) {
fprintf(stderr, "/* %s: %s */\n", argv[1], strerror(errno));
exit(1);
}
printf("/* C source created by blob2c from input file %s */\n\n", argv[1]);
fprintf(stderr,
"/* C header created by blob2c from input file %s */\n\n", argv[1]);
for(p = argv[1]; *p; p++)
if(!isalnum(*p)) *p = '_';
fprintf(stderr,
"#ifndef %s_H\n"
"#define %s_H\n\n",
argv[1], argv[1]);
/* start array definition */
printf("unsigned char %s[] = {", argv[1]);
asc[8] = '\0';
/* read/process each input byte in loop, until EOF */
while( (i = getc(in)) != EOF ) {
if(count) putchar(',');
if(count % 8 == 0) {
if(count) {
/* fix & print ASCII dump */
fixasc(asc, 8);
printf(" /* %s */", asc);
}
/* start next line */
printf("\n\t/* %6d */ ", count);
}
/* store this byte of ASCII dump */
asc[count % 8] = isprint(i) ? i : '.';
/* print this byte of hex data */
printf("0x%02x", i);
count++;
}
/* fix ASCII dump for last line */
i = count % 8;
if(!i) i = 8;
fixasc(asc, i);
asc[i] = '\0';
/* line it up with the previous lines */
j = (8 - i) * 5;
for(i=0; i<j; i++)
putchar(' ');
/* print it */
printf(" /* %s */", asc);
/* end of array definition */
printf("\n}; /* %s */\n\n", argv[1]);
/* array_len definition */
printf("int %s_len = %d;\n", argv[1], count);
/* check for read errors */
i = 0;
if(ferror(in)) {
fprintf(stderr, "#error %s: %s\n", argv[1], strerror(errno));
i = 1;
}
fclose(in);
/* extern declarations to stderr */
fprintf(stderr,
"extern unsigned char %s[];\nextern int %s_len;\n",
argv[1], argv[1]);
fprintf(stderr, "\n#endif /* %s_H */\n", argv[1]);
return i;
}
小波思基
- 粉丝: 89
- 资源: 1万+
最新资源
- 讲义+题目.rar
- python基于深度学习的人脸识别考勤系统源码+文档说明(高分毕业设计项目)
- Python 中实现超参数优化的朴素贝叶斯(Naive Bayes)多特征分类预测的项目示例(含完整的程序,GUI设计和代码详解)
- Python 实现CNN-RNN深度学习模型的项目示例(含完整的程序,GUI设计和代码详解)
- Python 实现BiGRU(双向门控循环单元)进行多输入单输出回归预测的项目实例(含完整的程序,GUI设计和代码详解)
- Python 实现MKELM(多核极限学习机)进行多特征分类预测的详细项目实例(含完整的程序,GUI设计和代码详解)
- Python 实现的蜣螂优化算法(DBO)来优化反向传播神经网络进行多输入单输出回归预测(含完整的程序,GUI设计和代码详解)
- Python 实现SSA-CNN-GRU(麻雀算法优化卷积门控循环单元)进行时间序列预测的详细项目实例(含完整的程序,GUI设计和代码详解)
- 毛玻璃个人引导页HTML源码.zip
- Python 实现支持向量机(SVM)进行二分类预测的详细项目实例(含完整的程序,GUI设计和代码详解)
- Python 实现通过麻雀算法优化的卷积神经网络(CNN)进行多输入单输出的回归预测实例(含完整的程序,GUI设计和代码详解)
- Python 实现通过麻雀算法优化的最小二乘支持向量机(LSSVM)进行多输入单输出的回归预测实例(含完整的程序,GUI设计和代码详解)
- Python 实现灰狼优化算法(GWO)来优化长短期记忆神经网络(LSTM),以进行时间序列预测实例(含完整的程序,GUI设计和代码详解)
- Python 的TreeBagger函数实现随机森林回归预测,并应用于多输入单输出问题实例(含完整的程序,GUI设计和代码详解)
- Matlab实现基于小波包结合鹈鹕算法优化卷积神经网络DWT-POA-CNN实现电缆故障诊断的详细项目实例(含完整的程序,GUI设计和代码详解)
- Matlab实现RIME-CNN-BiLSTM-Attention霜冰优化卷积双向长短期记忆网络注意力多变量回归预测(SE注意力机制)的详细项目实例(含完整的程序,GUI设计和代码详解)
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈