内容 |
BASE64/BASE32/BASE32HEX/BASE85Adobe/BASE85RFC/BASE91/BASE36/Base62/Base63 エンコード/uuencode を行う。 enBase64/enBase64BinFU は、Fileパス/URL に安全な Base64 エンコード処理を行う ****_32() 関数は、エンコード単位が 32bit 単位。"_32"が付いていないのは、全体を一つの巨大な整数としてエンコードを実施 対象データは、文字列 enBase64Bin(),enBase32Bin(),enBase32HexBin(),enBase85AdobeBin_32(),enBase85RFCBin_32(),enBase91Bin_32(),enBase36Bin_32(),enBase62Bin(),enBase63Bin(), UUencodeRawBin() の場合は文字列でなくてもよい |
引数 | エンコードしたい文字列 enBase64Bin(),enBase32Bin(),enBase32HexBin(),enBase85AdobeBin_32(),enBase85RFCBin_32(),enBase91Bin_32(),enBase36Bin_32(),enBase62Bin(),enBase63Bin(),UUencodeRawBin() の場合は文字列でなくてもよい |
戻り値 | エンコードされた文字列 |
IsError 値 | |
成功 | 0 |
失敗 | 負数 |
サンプルコード(WSH & VBScript) | |
Set Obj = WScript.CreateObject("ComBase64.Base64Func") ret = Obj.enBase64("文字列") Set Obj = Nothing |
内容 |
BASE64/BASE32/BASE32HEX/BASE85Adobe/BASE85RFC/BASE91/BASE36/Base62/Base63 デコード/uudecode を行う。 ****_32() 関数は、エンコード単位が 32bit 単位。"_32"が付いていないのは、全体を一つの巨大な整数としてエンコードを実施 対象データは、文字列 deBase64Bin(), deBase32Bin(), deBase32HexBin(), deBase85AdobeBin_32(), deBase85RFCBin_32(), deBase91Bin_32(), deBase36Bin_32(), deBase62Bin(), deBase63Bin(), UUdecodeRawBin() は出力が文字列とは限らない。 |
引数 | デコードしたい文字列 |
戻り値 | デコードされた文字列 deBase64Bin(),deBase32Bin(),deBase32HexBin(),deBase85AdobeBin_32(),deBase85RFCBin_32(),deBase91Bin_32(),deBase36Bin_32(),deBase62Bin(),deBase63Bin(),UUdecodeRawBin() の場合は文字列が返るとは限らない デコードできない場合(書式不正など)は、Empty が返る |
IsError 値 | |
成功 | 0 |
失敗 | 負数 |
サンプルコード(WSH & VBScript) | |
Set Obj = WScript.CreateObject("ComBase64.Base64Func") ret = Obj.deBase64("文字列") If IsEmpty(ret) = False Then Set Obj = Nothing |
内容 |
入力ファイルからデータを読み取り、Base64 エンコード/デコード または uuencode/uudecode を行い結果を出力ファイルに出力する。 FileUUencode() は、データを単純に uuencode/uudecode しているので、UNIX 系の uuencode/uudecode コマンドとは互換性がありません。 つまり、エンコードした内容をデコードしても元の内容と同じとは限りません。 uuencode/uudecode の特徴ですので、詳細はこちら |
引数 |
入力ファイル : 入力ファイル名(絶対パスが無難) 出力ファイル : 出力ファイル名(絶対パスが無難) モード : 0 : エンコード 1 : デコード |
戻り値 | なし |
IsError 値 | |
成功 | 0 |
失敗 | 負数 |
サンプルコード(WSH & VBScript) | |
Set Obj = WScript.CreateObject("ComBase64.Base64Func") Obj.deBase64 "c:\boot.ini","c:\boot.base64",1 Set Obj = Nothing |
内容 | 直前のメソッドが成功したかどうか。 |
引数 | なし |
戻り値 |
直前のメソッドが成功したかどうか 下記のエラー一覧を参照 |
サンプルコード(WSH & VBScript) | |
Set Obj = WScript.CreateObject("ComBase64.Base64Func") ret = Obj.deBase64("文字列") chk = Obj.IsError() If chk = 0 Then WScript.Echo デコードは成功しました Else WScript.Echo デコードは失敗しました End If Set Obj = Nothing |
内容 |
UNIX 系の uuencode/uudecode の符号化処理の部分だけを実装化した関数。 これを用いて、ヘッダとフッタを付加してファイルに書き出すことで、uuencode/uudecode コマンドと互換性のある関数を作ることができます。 |
引数 |
エンコード/デコードしたい文字列/バイト列 |
戻り値 | エンコード/デコードされた文字列/バイト列 |
IsError 値 | |
成功 | 0 |
失敗 | 負数 |
サンプルコード(WSH & VBScript) | |
Set Obj = WScript.CreateObject("ComBase64.Base64Func") Set FSObj = WScript.CreateObject("Scripting.FileSystemObject") Set FileObj = FSObj.OpenTextFile("入力ファイル") str = FileObj.ReadAll FileObj.Close ret = Obj.UUEncode(str) Set FileObj = FSObj.CreateTextFile(""出力ファイル") FileObj.WriteLine "begin 666 入力ファイル" FileObj.Wite str FileObj.WriteLine "`" FileObj.WriteLine "end" FileObj.Close Set FileObj = Nothing Set FSObj = Nothing Set Obj = Nothing |
|
ただし、OpenTextFile メソッドは、0x00 までしか読み取らないよ |
内容 |
RFC1924 にある IPv6 アドレス(16Byte[128Bit]) を Base85 エンコードする 入力データは、16Byteのバイト列(enBase85IPv6)、または20ByteのBase85文字列(deBase85IPv6) しか想定していない |
引数 | 16Byteのバイト列(enBase85IPv6)、または20ByteのBase85文字列(deBase85IPv6) |
戻り値 | エンコードされた文字列(20Byte)または、デコードされたバイト列(16Byte) |
#include "sBase64.h" |
メソッド一覧 |
---|
signed long SInUUEncode(unsigned char *,int,unsigned long) |
signed long SInBase64(unsigned char *,int,unsigned long) |
signed long SInBase64FU(unsigned char *,int,unsigned long) |
第一引数のメモリポインタから、第三引数分のデータを BASE64 エン/デ・コード、または uuencode/uudecode を行う。 実際の処理は、第一引数のデータを CSBase64 クラス内の myMemIn ポインタにコピー後、SInBase64Main() メソッドに処理は委ねられる。 SInBase64FU() は、Fileパス/URLに安全な Base64 エンコードを実施する
|
signed long SInBase64Main(int,unsigned long,int) |
CSBase64 クラス内の myMemIn ポインタのデータを Base64 エン/デ・コード処理を行う。
|
SBase32Decode(unsigned long,int) SBase32Encode(unsigned long,int) |
Base32/Base32Hex エン/デ・コードを行う。 対象は、CSBase64 クラス内の myMemIn ポインタ。 出力先は、CSBase64 クラス内の myMemOut ポインタ。 第一引数は、myMemInポインタで確保したエンコード対象のデータサイズ 第二引数は、0:Base32, 1:Base32Hex |
signed long SInUUEncodeFile(unsigned char *,unsigned char *,int) |
signed long SInBase64File(unsigned char *,unsigned char *,int) |
signed long SInBase64FileFU(unsigned char *,unsigned char *,int) |
|
unsigned long SenBase64Count(unsigned long); |
文字サイズを指定し、そのサイズのデータを BASE64 エンコード後の文字サイズを返す
|
unsigned long SdeBase64Count(unsigned char *); |
第一引数に指定されたポインタの文字列を BASE64 復号化した場合、何バイトになるかを戻す 単純に長さを3/4倍(通常、呼ばれる場合は小数点がでるはずがないので、小数点が出た場合、実装依存)して、最後の文字列が "==" なら2を減算、最後の文字だけが "=" なら1を減算しているだけ
|
signed long SdeBase64Check(unsigned char *inStr); |
第一引数に指定されたポインタの文字列が BASE64 符号化として妥当な文字列であるかどうかをチェックする。 チェック項目
|
unsigned char ** GetMyMemInPP(void) |
CSBase64 クラス内の myMemIn ポインタのアドレスを返す。 |
unsigned char * GetMyMemInP(void) |
CSBase64 クラス内の myMemIn ポインタを返す。 |
unsigned char * GetMyMemOutP(void) |
CSBase64 クラス内の myMemOut ポインタを返す。 |
unsigned long SuuencodeRaw(unsigned char *,unsigned long) |
UNIX 系の uuencode/uudecode の一行あたりのエンコード処理を行う。 エンコードされた結果の最初の 1byte は、データの長さを示す。 よって、63文字以上の入力データは、正常にエンコードできない。 |
unsigned long SuudecodeRaw(unsigned char *) |
UNIX 系の uuencode/uudecode エンコードされた一行をデコードする。 データの最初の文字を、データ長としてデコードし、2byte 目以降をデータとして、uudecode を行う。 2byte 目以降のデータ長さは、最初の文字をデコードした値がそれである。 よって、63文字以上の入力データは、正常にデコードできない。 |
unsigned long SuuencodeLikeFile(unsigned char *,unsigned long) |
UNIX 系の uuencode/uudecode の変換処理だけ行う。 入力データを 45byte ずつ区切り、SuuencodeRaw() 関数に渡し、エンコード処理を実施する。 SuuencodeRaw() 関数間には、CrLf を付加する。 この関数の出力結果にヘッダ、フッタを付加することで、UNIX 系の uuencode/uudecode コマンドとの互換性のある関数を実装することも可能 |
unsigned long SuudecodeLikeFile(unsigned char *) |
UNIX 系の uuencode/uudecode の変換処理だけ行うデコード版 入力データを CrLf ごとにくぎり SuudecodeRaw() 関数に渡す |
エラー一覧 ComBase64.dll,sBase64.dll 共通 |
|
---|---|
0 以上 | 正常終了 |
-1 | 予期しないエラーです |
-2 | メモリが確保できませんでした |
-3 | ファイルがオープンできません (ファイル読み込みエラー) |
-4 | ファイル内容が読み込めませんでした (ファイル読み込みエラー) |
-5 | ファイルがオープンできません (ファイル書き込みエラー) |
-6 | ファイルが書き込めませんでした (ファイル書き込みエラー) |
-7 | 引数の指定が間違っています |
-100 | デコードすべき文字列が 4 の倍数ではない (BASE64 化された文字列の長さは、4 の倍数です) |
-101 | BASE64 デコードでは正しくない文字列である |