C#(Unity)でBase64を使いたい
Base64をUnityで使うことになりそうなので自分用にまとめます。
スクリプトはコピペすればいつでも使えると思います。
Base64って何ぞ
Base64について。
「Wikipediaじゃねーか!」ってなりますよね。
適当にまとめると、
文字をビットに分けて6ビットごとに再度まとめる。そうして6ビットを1文字として再度出力。このとき文字列は、64文字(2^6なので)とパディングの"="の合計65文字で表現される。
って感じです。仕様的に自然と文字数は増えるのですね。
Base64について調べてみると、URLセーフだとかアンセーフだとかあるんですね。難しい。
いつでもどこでもBase64
スクリプトを掲載
using System;
using System.Text;
public class Base64Manager
{
public static string BytesToBase64(byte[] bytes){
return Convert.ToBase64String(bytes);
}
public static byte[] Base64ToBytes(string characters){
return Convert.FromBase64String(characters);
}
/*
base64URLの場合はこうなる
'+'->'-'
'/'->'_'
'='->消去
*/
public static string BytesToBase64Url(byte[] bytes){
StringBuilder sb=new StringBuilder(Convert.ToBase64String(bytes));
sb.Replace('+','-');
sb.Replace('/','_');
sb.Replace("=","");
return sb.ToString();
}
public static byte[] Base64UrlToBytes(string characters){
StringBuilder sb=new StringBuilder(characters);
sb.Replace('-','+');
sb.Replace('_','/');
for(int i=characters.Length%4;i<4;i++){
if(i==0){
break;
}
sb.Append("=");
}
return Convert.FromBase64String(sb.ToString());
}
}
自力でURLセーフにも対応できるようにしています。
ただの変換をしているだけで、再利用しやすいようにしたいのでどれもstatic関数です。そしてどれもバイト配列(もとの文字列)⇔文字列(Base64)です。
多分、使いやすいかな…?
最後に
今回はだいぶ短いです。まあ、そもそも変換だけなら既存の1行で済みますしね。このくらいの方が読むのにちょうどいいです。
また、スクリプト内でStringBuilderを使っていますが、多分ただのstringで十分です。あれは覚えたてのヤツを使いたがるアレです。
この記事が気に入ったらサポートをしてみませんか?