Created
February 26, 2014 20:27
-
-
Save ynakajima/9237830 to your computer and use it in GitHub Desktop.
[C言語] ファイルを BASE64 に変換する ref: http://qiita.com/ynakajima/items/c685e8f2c25c08adc855
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#include <stdio.h> | |
#include <stdlib.h> | |
#include <glib.h> | |
int main(int argc, char *argv[]) { | |
// 変数宣言 | |
FILE* fp; | |
long filesize; | |
unsigned char* buffer; | |
gchar* base64; | |
// ファイル名が渡されなかったら終了 | |
if (argc < 2) { | |
fprintf (stderr, "usage: %s filename\n", argv[0] ); | |
return 1; | |
} | |
// ファイルを開く | |
fp = fopen(argv[1], "rb"); | |
// ファイルを開けなかったら終了 | |
if (fp == NULL) { | |
printf("ファイルを開けませんでした\n"); | |
return 1; | |
} | |
// ファイルサイズ取得 | |
fseek(fp, 0, SEEK_END); | |
filesize = ftell(fp); | |
fseek(fp, 0, SEEK_SET); | |
// 読み込み用のバッファーを作成 | |
buffer = calloc(filesize, sizeof(unsigned char)); | |
// ファイルデータをメモリに読み込む | |
if (fread(buffer, sizeof(unsigned char), filesize, fp)) { | |
// BASE64 に変換 | |
base64 = g_base64_encode(buffer, filesize); | |
// 出力 | |
printf("%s\n", base64); | |
g_free(base64); | |
} | |
// 終了処理 | |
free(buffer); | |
fclose(fp); | |
return 0; | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#include <glib.h> | |
#include <glib/gstdio.h> | |
int main(int argc, char *argv[]) { | |
// 変数宣言 | |
GError** error; | |
GMappedFile* fp; | |
gsize filesize; | |
gchar* buffer; | |
gchar* base64; | |
// ファイル名が渡されなかったら終了 | |
if (argc < 2) { | |
fprintf (stderr, "usage: %s filename\n", argv[0] ); | |
return 1; | |
} | |
// ファイルを開く | |
error = NULL; | |
fp = g_mapped_file_new(argv[1], FALSE, error); | |
// ファイルを開けなかったら終了 | |
if (fp == NULL) { | |
printf("ファイルを開けませんでした\n"); | |
return 1; | |
} | |
// ファイルサイズ取得 | |
filesize = g_mapped_file_get_length(fp); | |
// ファイルデータをメモリに読み込む | |
buffer = g_mapped_file_get_contents(fp); | |
if (buffer) { | |
// BASE64 に変換 | |
base64 = g_base64_encode((guchar *)buffer, filesize); | |
// 出力 | |
printf("%s\n", base64); | |
g_free(base64); | |
} | |
// 終了処理 | |
g_mapped_file_unref(fp); | |
return 0; | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment