Documentation
¶
Overview ¶
base64パッケージは、RFC 4648で指定されているように、base64エンコーディングを実装します。
Example ¶
package main
import (
"github.com/shogo82148/std/encoding/base64"
"github.com/shogo82148/std/fmt"
)
func main() {
msg := "Hello, 世界"
encoded := base64.StdEncoding.EncodeToString([]byte(msg))
fmt.Println(encoded)
decoded, err := base64.StdEncoding.DecodeString(encoded)
if err != nil {
fmt.Println("decode error:", err)
return
}
fmt.Println(string(decoded))
}
Output: SGVsbG8sIOS4lueVjA== Hello, 世界
Index ¶
- Constants
- Variables
- func NewDecoder(enc *Encoding, r io.Reader) io.Reader
- func NewEncoder(enc *Encoding, w io.Writer) io.WriteCloser
- type CorruptInputError
- type Encoding
- func (enc *Encoding) AppendDecode(dst, src []byte) ([]byte, error)
- func (enc *Encoding) AppendEncode(dst, src []byte) []byte
- func (enc *Encoding) Decode(dst, src []byte) (n int, err error)
- func (enc *Encoding) DecodeString(s string) ([]byte, error)
- func (enc *Encoding) DecodedLen(n int) int
- func (enc *Encoding) Encode(dst, src []byte)
- func (enc *Encoding) EncodeToString(src []byte) string
- func (enc *Encoding) EncodedLen(n int) int
- func (enc Encoding) Strict() *Encoding
- func (enc Encoding) WithPadding(padding rune) *Encoding
Examples ¶
Constants ¶
const ( StdPadding rune = '=' NoPadding rune = -1 )
Variables ¶
var RawStdEncoding = StdEncoding.WithPadding(NoPadding)
RawStdEncodingは、RFC 4648 Section 3.2 で定義されている標準の生の、パディングされていないbase64エンコーディングです。 これは、StdEncoding と同じですが、パディング文字が省略されています。
var RawURLEncoding = URLEncoding.WithPadding(NoPadding)
RawURLEncodingは、RFC 4648で定義されているパディングされていない代替のbase64エンコーディングです。 通常、URLやファイル名で使用されます。 これは、URLEncoding と同じですが、パディング文字が省略されています。
var StdEncoding = NewEncoding(encodeStd)
StdEncodingは、RFC 4648で定義されている標準のbase64エンコーディングです。
var URLEncoding = NewEncoding(encodeURL)
URLEncodingは、RFC 4648で定義されている代替のbase64エンコーディングです。 通常、URLやファイル名で使用されます。
Functions ¶
func NewDecoder ¶
NewDecoderは、新しいbase64ストリームデコーダーを構築します。
func NewEncoder ¶
func NewEncoder(enc *Encoding, w io.Writer) io.WriteCloser
NewEncoderは、新しいbase64ストリームエンコーダーを返します。 返されたライターに書き込まれたデータはencを使用してエンコードされ、その後wに書き込まれます。 Base64エンコーディングは4バイトブロックで動作します。 書き込みが完了したら、呼び出し元は、部分的に書き込まれたブロックをフラッシュするために返されたエンコーダーを閉じる必要があります。
Example ¶
package main
import (
"github.com/shogo82148/std/encoding/base64"
"github.com/shogo82148/std/os"
)
func main() {
input := []byte("foo\x00bar")
encoder := base64.NewEncoder(base64.StdEncoding, os.Stdout)
encoder.Write(input)
// 部分的なブロックをフラッシュするために、終了時にエンコーダーを閉じる必要があります。
// 次の行のコメントを外すと、最後の部分ブロック「r」がエンコードされなくなります。
encoder.Close()
}
Output: Zm9vAGJhcg==
Types ¶
type CorruptInputError ¶
type CorruptInputError int64
func (CorruptInputError) Error ¶
func (e CorruptInputError) Error() string
type Encoding ¶
type Encoding struct {
// contains filtered or unexported fields
}
Encodingは、64文字のアルファベットによって定義される基数64のエンコーディング/デコーディングスキームです。 最も一般的なものは、RFC 4648で定義され、MIME(RFC 2045)およびPEM(RFC 1421)で使用される「base64」エンコーディングです。 RFC 4648は、+と/の代わりに-と_が使用された標準エンコーディングを定義しています。
func NewEncoding ¶
NewEncodingは、与えられたアルファベットによって定義されるパディングされた新しいエンコーディングを返します。 アルファベットは、パディング文字またはCR / LF('\r'、'\n')を含まない64バイトの文字列でなければなりません。 アルファベットは、マルチバイトUTF-8に対する特別な処理なしに、バイト値のシーケンスとして扱われます。 結果のエンコーディングは、デフォルトのパディング文字('=')を使用します。 パディング文字は Encoding.WithPadding を介して変更または無効化できます。
func (*Encoding) AppendDecode ¶ added in v1.22.0
AppendDecodeは、base64でデコードされたsrcをdstに追加し、 拡張されたバッファを返します。 入力が不正な形式の場合、部分的にデコードされたsrcとエラーを返します。 改行文字(\rと\n)は無視されます。
func (*Encoding) AppendEncode ¶ added in v1.22.0
AppendEncodeは、base64でエンコードされたsrcをdstに追加し、 拡張されたバッファを返します。
func (*Encoding) Decode ¶
Decodeは、エンコーディングencを使用してsrcをデコードします。最大で Encoding.DecodedLen(len(src))バイトをdstに書き込み、書き込まれたバイト数を 返します。呼び出し元は、dstがすべてのデコードされたデータを保持するのに 十分な大きさであることを確認する必要があります。srcに無効なbase64データが 含まれている場合、正常に書き込まれたバイト数と CorruptInputError を返します。 改行文字(\rと\n)は無視されます。
Example ¶
package main
import (
"github.com/shogo82148/std/encoding/base64"
"github.com/shogo82148/std/fmt"
)
func main() {
str := "SGVsbG8sIHdvcmxkIQ=="
dst := make([]byte, base64.StdEncoding.DecodedLen(len(str)))
n, err := base64.StdEncoding.Decode(dst, []byte(str))
if err != nil {
fmt.Println("decode error:", err)
return
}
dst = dst[:n]
fmt.Printf("%q\n", dst)
}
Output: "Hello, world!"
func (*Encoding) DecodeString ¶
DecodeStringは、base64文字列sで表されるバイトを返します。 入力が不正な形式の場合、部分的にデコードされたデータと CorruptInputError を返します。改行文字(\rと\n)は無視されます。
Example ¶
package main
import (
"github.com/shogo82148/std/encoding/base64"
"github.com/shogo82148/std/fmt"
)
func main() {
str := "c29tZSBkYXRhIHdpdGggACBhbmQg77u/"
data, err := base64.StdEncoding.DecodeString(str)
if err != nil {
fmt.Println("error:", err)
return
}
fmt.Printf("%q\n", data)
}
Output: "some data with \x00 and \ufeff"
func (*Encoding) DecodedLen ¶
DecodedLenは、nバイトのbase64エンコードされたデータに対応するデコードされたデータの最大バイト数を返します。
func (*Encoding) Encode ¶
Encodeは、エンコーディングencを使用してsrcをエンコードし、 Encoding.EncodedLen(len(src))バイトをdstに書き込みます。
エンコーディングは、出力を4バイトの倍数にパディングするため、 大量のデータストリームの個々のブロックにEncodeを使用することは適切ではありません。 代わりに NewEncoder を使用してください。
Example ¶
package main
import (
"github.com/shogo82148/std/encoding/base64"
"github.com/shogo82148/std/fmt"
)
func main() {
data := []byte("Hello, world!")
dst := make([]byte, base64.StdEncoding.EncodedLen(len(data)))
base64.StdEncoding.Encode(dst, data)
fmt.Println(string(dst))
}
Output: SGVsbG8sIHdvcmxkIQ==
func (*Encoding) EncodeToString ¶
EncodeToStringは、srcのbase64エンコーディングを返します。
Example ¶
package main
import (
"github.com/shogo82148/std/encoding/base64"
"github.com/shogo82148/std/fmt"
)
func main() {
data := []byte("any + old & data")
str := base64.StdEncoding.EncodeToString(data)
fmt.Println(str)
}
Output: YW55ICsgb2xkICYgZGF0YQ==
func (*Encoding) EncodedLen ¶
EncodedLenは、長さnの入力バッファのbase64エンコーディングのバイト数を返します。
func (Encoding) Strict ¶ added in v1.8.0
Strictは、RFC 4648 Section 3.5 で説明されているように、 末尾のパディングビットがゼロであることを要求する厳密なデコードが有効になっているencと同一の新しいエンコーディングを作成します。
ただし、入力はまだ操作可能であり、改行文字(CRおよびLF)は引き続き無視されます。
func (Encoding) WithPadding ¶ added in v1.5.0
WithPaddingは、指定されたパディング文字または NoPadding を使用して、encと同一の新しいエンコーディングを作成します。 パディング文字は'\r'または'\n'ではなく、エンコーディングのアルファベットに含まれていない必要があり、'\xff'以下のルーンである必要があります。 '\x7f'より上のパディング文字は、コードポイントのUTF-8表現を使用する代わりに、その正確なバイト値としてエンコードされます。