XmlWriter.WriteBase64(Byte[], Int32, Int32) XmlWriter.WriteBase64(Byte[], Int32, Int32) XmlWriter.WriteBase64(Byte[], Int32, Int32) XmlWriter.WriteBase64(Byte[], Int32, Int32) Method

定義

派生クラスでオーバーライドされると、指定したバイナリ バイトを Base64 としてエンコードし、その結果生成されるテキストを書き込みます。When overridden in a derived class, encodes the specified binary bytes as Base64 and writes out the resulting text.

public:
 abstract void WriteBase64(cli::array <System::Byte> ^ buffer, int index, int count);
public abstract void WriteBase64 (byte[] buffer, int index, int count);
abstract member WriteBase64 : byte[] * int * int -> unit
Public MustOverride Sub WriteBase64 (buffer As Byte(), index As Integer, count As Integer)

パラメーター

buffer
Byte[]

エンコードするバイト配列。Byte array to encode.

index
Int32 Int32 Int32 Int32

書き込むバイトの開始を示すバッファー内の位置。The position in the buffer indicating the start of the bytes to write.

count
Int32 Int32 Int32 Int32

書き込むバイト数。The number of bytes to write.

例外

index または count が 0 未満です。index or count is less than zero.

または-or- バッファーの長さから index を引いた値が count 未満です。The buffer length minus index is less than count.

先行の非同期操作が完了する前に、XmlWriter メソッドが呼び出されました。An XmlWriter method was called before a previous asynchronous operation finished. この場合、「非同期操作が既に実行されています」というメッセージと共に InvalidOperationException がスローされます。In this case, InvalidOperationException is thrown with the message "An asynchronous operation is already in progress."

次の例ではWriteBase64 、メソッドをBase64使用してデータを書き込みます。The following example uses the WriteBase64 method to write Base64 data. データBase64<image>要素内に埋め込まれています。The Base64 data is embedded within an <image> element.


public static void Base64EncodeImageFile() {

  int bufferSize = 1000;
  byte[] buffer = new byte[bufferSize];
  int readBytes = 0;
    
  using (XmlWriter writer = XmlWriter.Create("output.xml")) {

       FileStream inputFile = new FileStream(@"C:\artFiles\sunset.jpg",
                                                                    FileMode.OpenOrCreate, FileAccess.Read, FileShare.Read);
       writer.WriteStartDocument();
       writer.WriteStartElement("image");
       BinaryReader br = new BinaryReader(inputFile);
       Console.WriteLine("\r\nWriting Base64 data...");

       do {
          readBytes = br.Read(buffer, 0, bufferSize);
          writer.WriteBase64(buffer, 0, readBytes);
       } while (bufferSize <= readBytes);
       br.Close();
        
    writer.WriteEndElement();// </image>
    writer.WriteEndDocument();
        
  }
}
Public Shared Sub Base64EncodeImageFile() 
    
    Dim bufferSize As Integer = 1000
    Dim buffer(bufferSize) As Byte
    Dim readBytes As Integer = 0
    
    Using writer As XmlWriter = XmlWriter.Create("output.xml")

            Dim inputFile As New FileStream("C:\artFiles\sunset.jpg", FileMode.OpenOrCreate, FileAccess.Read, FileShare.Read)
            writer.WriteStartDocument()
            writer.WriteStartElement("image")
            Dim br As New BinaryReader(inputFile)
            Console.WriteLine(vbCr + vbLf + "Writing Base64 data...")
            
            Do
                readBytes = br.Read(buffer, 0, bufferSize)
                writer.WriteBase64(buffer, 0, readBytes)
            Loop While bufferSize <= readBytes
            br.Close()
        
        writer.WriteEndElement() ' </image>
        writer.WriteEndDocument()

    End Using
 
End Sub

注釈

たとえば、バイトバッファーには、GIF イメージのバイナリコンテンツが含まれている場合があります。For example, the byte buffer may contain the binary contents of a GIF image. これは明らかに有効な XML ではありません。This clearly would not be valid XML. このBase64エンコードは、65の us-ascii 文字 ([Za-a-za-z0-9 +/=]) で構成されるテキスト形式の任意のバイトシーケンスを表すように設計されています。この場合、各文字はバイナリデータの6ビットをエンコードします。The Base64 encoding is designed to represent arbitrary byte sequences in a text form comprised of the 65 US-ASCII characters ([A-Za-z0-9+/=]) where each character encodes 6 bits of the binary data. 詳細については、「 requestfor COMMENTS (RFC) 1521」を参照してください。For more information, see Requests for Comments (RFC) 1521 located on the Request for Comments Web site.

このメソッドの非同期バージョンについてはWriteBase64Async、「」を参照してください。For the asynchronous version of this method, see WriteBase64Async.

適用対象