【发布时间】:2012-03-06 18:24:55
【问题描述】:
我正在尝试编写一些简单的程序来将文件上传到我的服务器。我想将二进制文件转换为十六进制。我写了一些东西,但它不能正常工作。
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
static int bufferSize = 1024;
FILE *source;
FILE *dest;
int n;
int counter;
int main() {
unsigned char buffer[bufferSize];
source = fopen("server.pdf", "rb");
if (source) {
dest = fopen("file_test", "wb");
while (!feof(source)) {
n = fread(buffer, 1, bufferSize, source);
counter += n;
strtol(buffer, NULL, 2);
fwrite(buffer, 1, n, dest);
}
}
else {
printf("Error");
}
fclose(source);
fclose(dest);
}
我使用strtol 将二进制转换为十六进制。调用此代码后,我的 file_test 文件中仍有奇怪的字符。
我想在服务器上上传一个文件,例如 PDF 文件。但首先我必须编写一个程序,将这个文件转换为一个十六进制文件。我希望 hex 文件中的一行长度等于 1024。之后,我将使用 PL/SQL 逐行上传此文件。
【问题讨论】:
-
你想要什么?你不能用十六进制编辑器读取二进制值吗?我看不出将二进制转换为人类可读的十六进制的意义。
-
strtol()不会像您认为的那样做。阅读您的文档。 -
使用base64格式怎么样?这是讨论stackoverflow.com/questions/342409/…
-
@2r4w -- base-64 可能对 OP 的困惑有一些理论上或切向的影响,但在他的问题的背景下没有实际帮助。