まとめリンク: 同じことをいろんな言語で書いてみたシリーズ
C++ (Base64エンコード)
#include "./clx/base64.h"
#include <fstream>
int main(int argc, char *argv[])
{
std::string filename = "./data_file_name";
std::ifstream ifs(filename.c_str(), std::ios::in | std::ios::binary);
if (!ifs)
{
std::cout << "ファイルが見つかりませんでした" << std::endl;
return 1;
}
ifs.seekg(0, std::ios::end);
long long int dat_size = ifs.tellg();
ifs.seekg(0);
char *dat = new char[dat_size];
ifs.read(dat, dat_size);
std::cout << clx::base64::encode(dat, dat_size);
}
C++ (Base64デコード)
#include "./clx/base64.h"
#include <fstream>
int main(int argc, char *argv[])
{
std::string filename = "./base64_text_data";
std::string output_filename = "./decode_data";
std::ifstream ifs(filename.c_str(), std::ios::in | std::ios::binary);
if (!ifs)
{
std::cout << "ファイルが見つかりませんでした" << std::endl;
return 1;
}
std::string dat = std::string(
std::istreambuf_iterator<char>(ifs),
std::istreambuf_iterator<char>()
);
std::ofstream ofs(output_filename, std::ios_base::binary);
std::ostreambuf_iterator<char> output(ofs);
clx::base64::decode(dat.begin(), dat.end(), output);
}
Ruby (Base64エンコード)
require "base64"
filename = "./data_file_name"
dat = File.read(filename)
print Base64.encode64(dat)
Ruby (Base64デコード)
require "base64"
filename = "./base64_text_data"
output_filename = "./decode_data"
dat = File.read(filename)
File.open(output_filename, "w") { |f|
f.write(Base64.decode64(dat))
}
Crystal (Base64エンコード)
require "base64"
filename = "./data_file_name"
dat = File.read(filename)
print Base64.encode(dat)
Crystal (Base64デコード)
require "base64"
filename = "./base64_text_data"
output_filename = "./decode_data"
dat = File.read(filename)
File.open(output_filename, "w") { |f|
f.write(Base64.decode(dat))
}
Rust (Base64エンコード)
use std::io::prelude::*;
fn main() {
let filename: &str = "./data_file_name";
let mut f = std::fs::File::open(filename).expect("ファイルが見つかりませんでした");
let mut dat = Vec::new();
f.read_to_end(&mut dat).expect("ファイルの読み込みで問題が発生しました");
print!("{}", base64::encode(dat));
}
Rust (Base64デコード)
use std::io::Write;
fn main() {
let filename: &str = "./base64_text_data";
let output_filename: &str = "./decode_data";
let dat = std::fs::read_to_string(&filename).expect("ファイルを読み込めませんでした");
let bytes = base64::decode(dat).expect("デコード作業に失敗しました");
let mut f = std::fs::File::create(&output_filename).expect("ファイルの確保に失敗しました");
f.write_all(&bytes).expect("ファイルの書き出しに失敗しました");
}
Python3 (Base64エンコード)
import base64
filename = "./data_file_name"
dat = open(filename, "rb").read()
print(base64.b64encode(dat).decode("utf-8"), end="")
Python3 (Base64デコード)
import base64
filename = "./base64_text_data"
output_filename = "./decode_data"
dat = open(filename, "rb").read()
with open(output_filename, "wb") as f:
f.write(base64.b64decode(dat))
Node.js (Base64エンコード)
'use strict'
const filename = "./data_file_name"
process.stdout.write(
require("fs").readFileSync(filename, 'base64')
);
Node.js (Base64デコード)
'use strict'
const fs = require("fs");
const filename = "./base64_text_data"
const output_filename = "./decode_data"
const dat = fs.readFileSync(filename, 'utf8');
fs.promises.writeFile(output_filename, dat, { encoding: "base64" });
C# (Base64エンコード)
String filename = "./data_file_name";
byte[] dat = File.ReadAllBytes(filename);
Console.Write(Convert.ToBase64String(dat));
C# (Base64デコード)
String filename = "./base64_text_data";
String output_filename = "./decode_data";
String dat = System.IO.File.ReadAllText(filename, System.Text.Encoding.UTF8);
using (var fs = new FileStream(output_filename, FileMode.Create))
using (var bw = new BinaryWriter(fs))
{
bw.Write(Convert.FromBase64String(dat));
}