英語で読む

次の方法で共有


Convert.ToBase64CharArray メソッド

定義

8 ビット符号なし整数配列のサブセットを、Base64 の数字でエンコードされた Unicode 文字配列の等価のサブセットに変換します。

オーバーロード

ToBase64CharArray(Byte[], Int32, Int32, Char[], Int32, Base64FormattingOptions)

8 ビット符号なし整数配列のサブセットを、Base64 の数字でエンコードされた Unicode 文字配列の等価のサブセットに変換します。 入力配列と出力配列のオフセットとしてのサブセット、変換する入力配列の要素の数、および出力配列で改行を挿入するかどうかをパラメーターで指定します。

ToBase64CharArray(Byte[], Int32, Int32, Char[], Int32)

8 ビット符号なし整数配列のサブセットを、Base64 の数字でエンコードされた Unicode 文字配列の等価のサブセットに変換します。 入力配列と出力配列のオフセットとしてのサブセット、および変換する入力配列の要素の数をパラメーターで指定します。

ToBase64CharArray(Byte[], Int32, Int32, Char[], Int32, Base64FormattingOptions)

ソース:
Convert.cs
ソース:
Convert.cs
ソース:
Convert.cs

8 ビット符号なし整数配列のサブセットを、Base64 の数字でエンコードされた Unicode 文字配列の等価のサブセットに変換します。 入力配列と出力配列のオフセットとしてのサブセット、変換する入力配列の要素の数、および出力配列で改行を挿入するかどうかをパラメーターで指定します。

C#
public static int ToBase64CharArray (byte[] inArray, int offsetIn, int length, char[] outArray, int offsetOut, Base64FormattingOptions options);
C#
[System.Runtime.InteropServices.ComVisible(false)]
public static int ToBase64CharArray (byte[] inArray, int offsetIn, int length, char[] outArray, int offsetOut, Base64FormattingOptions options);

パラメーター

inArray
Byte[]

8 ビット符号なし整数で構成される入力配列。

offsetIn
Int32

inArray 内での位置。

length
Int32

変換する inArray の要素の数。

outArray
Char[]

Unicode 文字の出力配列。

offsetOut
Int32

outArray 内での位置。

options
Base64FormattingOptions

76 文字ごとに改行を挿入する場合は InsertLineBreaks。改行を挿入しない場合は None

戻り値

outArray のバイト数が格納された 32 ビット符号付き整数。

属性

例外

inArray または outArraynull です。

offsetInoffsetOut、または length が負の値です。

または

offsetInlength を加算した値が、inArray の長さを超えています。

または

offsetOut と返される要素の数を加算した値が outArrayの長さを超えています。

options は有効な Base64FormattingOptions 値ではありません。

ToBase64CharArrayメソッドの例を次に示します。 入力は、それぞれ 3 バイト (24 ビット) のグループに分割されます。 したがって、各グループは 4 つの 6 ビット数値で構成され、各数値は 10 進数の 0 から 63 の範囲になります。 この例では、残り 1 バイトの 85 個の 3 バイト グループがあります。 最初のグループは、16 進数の値 00、01、および 02 で構成され、10 進数の 0、0、4、および 2 に等しい 4 つの 6 ビット値が生成されます。 これらの 4 つの値は、出力の先頭にある base-64 桁の "A"、"A"、"E"、および "C" に対応します。

整数の 3 バイト のグループが存在しない場合、残りのバイトは実質的にゼロで埋め込まれるので、完全なグループが形成されます。 この例では、最後のバイトの値は 16 進数 FF です。 最初の 6 ビットは 10 進 63 と等しく、出力の末尾の base-64 桁の "/" に対応し、次の 2 ビットには 0 が埋め込まれており、10 進数 48 が生成されます。これは、底 64 桁の "w" に対応します。 最後の 2 つの 6 ビット値は埋め込みであり、値のない埋め込み文字 "=" に対応します。

C#
// This example demonstrates the Convert.ToBase64CharArray() and
//                               Convert.FromBase64CharArray methods

using System;

class Sample
{
    public static void Main()
    {
    byte[] byteArray1 = new byte[256];
    byte[] byteArray2 = new byte[256];
    char[] charArray  = new char[352];
    int charArrayLength;
    string nl = Environment.NewLine;

    string ruler1a = "         1         2         3         4";
    string ruler2a = "1234567890123456789012345678901234567890";
    string ruler3a = "----+----+----+----+----+----+----+----+";
    string ruler1b = "         5         6         7      ";
    string ruler2b = "123456789012345678901234567890123456";
    string ruler3b = "----+----+----+----+----+----+----+-";
    string ruler   = String.Concat(ruler1a, ruler1b, nl,
                                   ruler2a, ruler2b, nl,
                                   ruler3a, ruler3b);

// 1) Initialize and display a Byte array of arbitrary data.
    Console.WriteLine("1) Input: A Byte array of arbitrary data.{0}", nl);
    for (int x = 0; x < byteArray1.Length; x++)
    {
    byteArray1[x] = (byte)x;
    Console.Write("{0:X2} ", byteArray1[x]);
    if (((x+1)%20) == 0) Console.WriteLine();
    }
    Console.Write("{0}{0}", nl);

// 2) Convert the input Byte array to a Char array, with newlines inserted.
    charArrayLength =
        Convert.ToBase64CharArray(byteArray1, 0, byteArray1.Length,
                                   charArray, 0, Base64FormattingOptions.InsertLineBreaks);
    Console.WriteLine("2) Convert the input Byte array to a Char array with newlines.");
    Console.Write("   Output: A Char array (length = {0}). ", charArrayLength);
    Console.WriteLine("The elements of the array are:{0}", nl);
    Console.WriteLine(ruler);
    Console.WriteLine(new String(charArray));
    Console.WriteLine();

// 3) Convert the Char array back to a Byte array.
    Console.WriteLine("3) Convert the Char array to an output Byte array.");
    byteArray2 = Convert.FromBase64CharArray(charArray, 0, charArrayLength);

// 4) Are the input and output Byte arrays equivalent?
    Console.WriteLine("4) The output Byte array is equal to the input Byte array: {0}",
                      ArraysAreEqual(byteArray1, byteArray2));
    }

    public static bool ArraysAreEqual(byte[] a1, byte[] a2)
    {
    if (a1.Length != a2.Length) return false;
    for (int i = 0; i < a1.Length; i++)
        if (a1[i] != a2[i]) return false;
    return true;
    }
}
/*
This example produces the following results:

1) Input: A Byte array of arbitrary data.

00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 10 11 12 13
14 15 16 17 18 19 1A 1B 1C 1D 1E 1F 20 21 22 23 24 25 26 27
28 29 2A 2B 2C 2D 2E 2F 30 31 32 33 34 35 36 37 38 39 3A 3B
3C 3D 3E 3F 40 41 42 43 44 45 46 47 48 49 4A 4B 4C 4D 4E 4F
50 51 52 53 54 55 56 57 58 59 5A 5B 5C 5D 5E 5F 60 61 62 63
64 65 66 67 68 69 6A 6B 6C 6D 6E 6F 70 71 72 73 74 75 76 77
78 79 7A 7B 7C 7D 7E 7F 80 81 82 83 84 85 86 87 88 89 8A 8B
8C 8D 8E 8F 90 91 92 93 94 95 96 97 98 99 9A 9B 9C 9D 9E 9F
A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 AA AB AC AD AE AF B0 B1 B2 B3
B4 B5 B6 B7 B8 B9 BA BB BC BD BE BF C0 C1 C2 C3 C4 C5 C6 C7
C8 C9 CA CB CC CD CE CF D0 D1 D2 D3 D4 D5 D6 D7 D8 D9 DA DB
DC DD DE DF E0 E1 E2 E3 E4 E5 E6 E7 E8 E9 EA EB EC ED EE EF
F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 FA FB FC FD FE FF

2) Convert the input Byte array to a Char array with newlines.
   Output: A Char array (length = 352). The elements of the array are:

         1         2         3         4         5         6         7
1234567890123456789012345678901234567890123456789012345678901234567890123456
----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+-
AAECAwQFBgcICQoLDA0ODxAREhMUFRYXGBkaGxwdHh8gISIjJCUmJygpKissLS4vMDEyMzQ1Njc4
OTo7PD0+P0BBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWltcXV5fYGFiY2RlZmdoaWprbG1ub3Bx
cnN0dXZ3eHl6e3x9fn+AgYKDhIWGh4iJiouMjY6PkJGSk5SVlpeYmZqbnJ2en6ChoqOkpaanqKmq
q6ytrq+wsbKztLW2t7i5uru8vb6/wMHCw8TFxsfIycrLzM3Oz9DR0tPU1dbX2Nna29zd3t/g4eLj
5OXm5+jp6uvs7e7v8PHy8/T19vf4+fr7/P3+/w==

3) Convert the Char array to an output Byte array.
4) The output Byte array is equal to the input Byte array: True

*/

注釈

位置 から始まるoffsetInパラメーターの要素のlengthinArrayサブセットは数値として取得され、位置 offsetOutからパラメーター内outArrayの要素のサブセットに変換されます。 戻り値は、 内の変換された要素の数を outArray示します。 の outArray サブセットは、64 桁の底で構成されます。

0 から昇順の 64 桁の数字は、大文字の "A" から "Z"、小文字の "a" から "z"、数字 "0" から "9"、および記号 "+" と "/" です。 末尾の埋め込みには、値のない文字 "=" が使用されます。

offsetパラメーターと length パラメーターは、32 ビット符号付き数値です。 offsetInパラメーターと offsetOut パラメーターは、0 から始まる配列位置です。

重要

メソッドは ToBase64CharArray 、エンコードされるすべてのデータを含む 1 バイト配列を処理するように設計されています。 バイト ストリームから base-64 文字配列を作成するには、 クラスを使用します System.Security.Cryptography.ToBase64Transform

パラメーターが optionsInsertLineBreaks 設定されていて、変換の出力が 76 文字を超える場合は、76 文字ごとに改行が挿入されます。 改行は、復帰文字 (U+000D) の後に改行文字 (U+000A) が続くものとして定義されます。 詳細については、RFC 2045 の「多目的インターネット メール拡張機能」を参照 https://www.rfc-editor.org/してください。

こちらもご覧ください

適用対象

.NET 9 およびその他のバージョン
製品 バージョン
.NET Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 2.0, 2.1

ToBase64CharArray(Byte[], Int32, Int32, Char[], Int32)

ソース:
Convert.cs
ソース:
Convert.cs
ソース:
Convert.cs

8 ビット符号なし整数配列のサブセットを、Base64 の数字でエンコードされた Unicode 文字配列の等価のサブセットに変換します。 入力配列と出力配列のオフセットとしてのサブセット、および変換する入力配列の要素の数をパラメーターで指定します。

C#
public static int ToBase64CharArray (byte[] inArray, int offsetIn, int length, char[] outArray, int offsetOut);

パラメーター

inArray
Byte[]

8 ビット符号なし整数で構成される入力配列。

offsetIn
Int32

inArray 内での位置。

length
Int32

変換する inArray の要素の数。

outArray
Char[]

Unicode 文字の出力配列。

offsetOut
Int32

outArray 内での位置。

戻り値

outArray のバイト数が格納された 32 ビット符号付き整数。

例外

inArray または outArraynull です。

offsetInoffsetOut、または length が負の値です。

または

offsetInlength を加算した値が、inArray の長さを超えています。

または

offsetOut と返される要素の数を加算した値が outArrayの長さを超えています。

次の例では、 メソッドを ToBase64CharArray 使用してバイナリ ストリームを UUencode (base 64 でエンコード) し、エンコードをファイルに保存する方法を示します。

C#
public void EncodeWithCharArray() {
   System.IO.FileStream inFile;
   byte[]             binaryData;

   try {
      inFile = new System.IO.FileStream(inputFileName,
                                 System.IO.FileMode.Open,
                                System.IO.FileAccess.Read);
      binaryData = new Byte[inFile.Length];
      long bytesRead = inFile.Read(binaryData, 0,
                           (int) inFile.Length);
      inFile.Close();
   }
   catch (System.Exception exp) {
      // Error creating stream or reading from it.
      System.Console.WriteLine("{0}", exp.Message);
      return;
   }

   // Convert the binary input into Base64 UUEncoded output.
   // Each 3 byte sequence in the source data becomes a 4 byte
   // sequence in the character array.
   long arrayLength = (long) ((4.0d/3.0d) * binaryData.Length);

   // If array length is not divisible by 4, go up to the next
   // multiple of 4.
   if (arrayLength % 4 != 0) {
      arrayLength += 4 - arrayLength % 4;
   }

   char[] base64CharArray = new char[arrayLength];
   try {
      System.Convert.ToBase64CharArray(binaryData,
                               0,
                               binaryData.Length,
                               base64CharArray,
                               0);
   }
   catch (System.ArgumentNullException) {
      System.Console.WriteLine("Binary data array is null.");
      return;
   }
   catch (System.ArgumentOutOfRangeException) {
      System.Console.WriteLine("Char Array is not large enough.");
      return;
   }

   // Write the UUEncoded version to the output file.
   System.IO.StreamWriter outFile;
   try {
      outFile = new System.IO.StreamWriter(outputFileName,
                              false,
                              System.Text.Encoding.ASCII);
      outFile.Write(base64CharArray);
      outFile.Close();
   }
   catch (System.Exception exp) {
      // Error creating stream or writing to it.
      System.Console.WriteLine("{0}", exp.Message);
   }
}

注釈

位置 offsetInから始まる 要素のlengthinArrayサブセットは、数値として取得され、位置 offsetOutから始まる要素のサブセットにoutArray変換されます。 戻り値は、 内の変換された要素の数を outArray示します。 の outArray サブセットは、64 桁の底で構成されます。

0 から昇順の 64 桁の数字は、大文字の "A" から "Z"、小文字の "a" から "z"、数字 "0" から "9"、および記号 "+" と "/" です。 末尾の埋め込みには、値のない文字 "=" が使用されます。

offsetパラメーターと length パラメーターは、32 ビット符号付き数値です。 offsetInパラメーターと offsetOut パラメーターは、0 から始まる配列位置です。

重要

メソッドは ToBase64CharArray 、エンコードされるすべてのデータを含む 1 バイト配列を処理するように設計されています。 バイト ストリームから base-64 文字配列を作成するには、 クラスを使用します System.Security.Cryptography.ToBase64Transform

こちらもご覧ください

適用対象

.NET 9 およびその他のバージョン
製品 バージョン
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 1.1, 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 1.0, 1.1, 1.2, 1.3, 1.4, 1.5, 1.6, 2.0, 2.1
UWP 10.0