XmlTextReader.ReadBase64(Byte[], Int32, Int32) 메서드
정의
중요
일부 정보는 릴리스되기 전에 상당 부분 수정될 수 있는 시험판 제품과 관련이 있습니다. Microsoft는 여기에 제공된 정보에 대해 어떠한 명시적이거나 묵시적인 보증도 하지 않습니다.
Base64를 디코딩하고 디코딩된 이진 바이트를 반환합니다.
public:
int ReadBase64(cli::array <System::Byte> ^ array, int offset, int len);
public int ReadBase64 (byte[] array, int offset, int len);
member this.ReadBase64 : byte[] * int * int -> int
Public Function ReadBase64 (array As Byte(), offset As Integer, len As Integer) As Integer
매개 변수
- array
- Byte[]
텍스트 콘텐츠를 쓸 버퍼 역할을 하는 문자 배열입니다.
- offset
- Int32
메서드가 버퍼에 쓰기를 시작할 수 있는 위치를 지정하는 배열의 0부터 시작하는 인덱스입니다.
- len
- Int32
버퍼에 쓸 바이트 수입니다.
반환
버퍼에 쓴 바이트 수입니다.
예외
Base64 시퀀스가 잘못된 경우
array
값이 null
인 경우
offset
< 0 또는 len
< 0 또는 len
> array
.Length- offset
입니다.
예제
다음 예제에서는 Base64 및 BinHex 데이터가 포함된 파일을 읽습니다.
#using <System.Xml.dll>
using namespace System;
using namespace System::IO;
using namespace System::Xml;
int main()
{
XmlTextReader^ reader = nullptr;
String^ filename = "binary.xml";
try
{
reader = gcnew XmlTextReader( filename );
reader->WhitespaceHandling = WhitespaceHandling::None;
// Read the file. Stop at the Base64 element.
while ( reader->Read() )
{
if ( "Base64" == reader->Name )
break;
}
// Read the Base64 data. Write the decoded
// bytes to the console.
Console::WriteLine( "Reading Base64... " );
int base64len = 0;
array<Byte>^base64 = gcnew array<Byte>(1000);
do
{
base64len = reader->ReadBase64( base64, 0, 50 );
for ( int i = 0; i < base64len; i++ )
Console::Write( base64[ i ] );
}
while ( reader->Name->Equals( "Base64" ) );
// Read the BinHex data. Write the decoded
// bytes to the console.
Console::WriteLine( "\r\nReading BinHex..." );
int binhexlen = 0;
array<Byte>^binhex = gcnew array<Byte>(1000);
do
{
binhexlen = reader->ReadBinHex( binhex, 0, 50 );
for ( int i = 0; i < binhexlen; i++ )
Console::Write( binhex[ i ] );
}
while ( reader->Name->Equals( "BinHex" ) );
}
finally
{
Console::WriteLine();
Console::WriteLine( "Processing of the file {0} complete.", filename );
if ( reader != nullptr )
reader->Close();
}
}
using System;
using System.IO;
using System.Xml;
public class Sample {
private const string filename = "binary.xml";
public static void Main() {
XmlTextReader reader = null;
try {
reader = new XmlTextReader(filename);
reader.WhitespaceHandling = WhitespaceHandling.None;
// Read the file. Stop at the Base64 element.
while (reader.Read()) {
if ("Base64" == reader.Name) break;
}
// Read the Base64 data. Write the decoded
// bytes to the console.
Console.WriteLine("Reading Base64... ");
int base64len = 0;
byte[] base64 = new byte[1000];
do {
base64len = reader.ReadBase64(base64, 0, 50);
for (int i=0; i < base64len; i++) Console.Write(base64[i]);
} while (reader.Name == "Base64");
// Read the BinHex data. Write the decoded
// bytes to the console.
Console.WriteLine("\r\nReading BinHex...");
int binhexlen = 0;
byte[] binhex = new byte[1000];
do {
binhexlen = reader.ReadBinHex(binhex, 0, 50);
for (int i=0; i < binhexlen; i++) Console.Write(binhex[i]);
} while (reader.Name == "BinHex");
}
finally {
Console.WriteLine();
Console.WriteLine("Processing of the file {0} complete.", filename);
if (reader != null)
reader.Close();
}
}
}
Option Explicit
Option Strict
Imports System.IO
Imports System.Xml
Public Class Sample
Private Const filename As String = "binary.xml"
Public Shared Sub Main()
Dim reader As XmlTextReader = Nothing
Dim i As Integer
Try
reader = New XmlTextReader(filename)
reader.WhitespaceHandling = WhitespaceHandling.None
' Read the file. Stop at the Base64 element.
While reader.Read()
If "Base64" = reader.Name Then
Exit While
End If
End While
' Read the Base64 data. Write the decoded
' bytes to the console.
Console.WriteLine("Reading base64... ")
Dim base64len As Integer = 0
Dim base64(1000) As Byte
Do
base64len = reader.ReadBase64(base64, 0, 50)
For i = 0 To base64len - 1
Console.Write(base64(i))
Next i
Loop While (reader.Name = "Base64")
' Read the BinHex data. Write the decoded
' bytes to the console.
Console.WriteLine(ControlChars.CrLf & "Reading binhex....")
Dim binhexlen As Integer = 0
Dim binhex(1000) As Byte
binhexlen = reader.ReadBinHex(binhex, 0, 50)
Do
binhexlen = reader.ReadBinHex(binhex, 0, 50)
For i = 0 To binhexlen - 1
Console.Write(binhex(i))
Next i
Loop While (reader.Name = "BinHex")
Finally
Console.WriteLine()
Console.WriteLine("Processing of the file {0} complete.", filename)
If Not (reader Is Nothing) Then
reader.Close()
End If
End Try
End Sub
End Class
샘플은 파일을 사용합니다. binary.xml
<data>
<!-- sample data for base64 and binhex -->
<Base64>AAECAwQFBgcICQoLDA0ODxAREhMUFRYXGBkaGxwdHh8gISIjJCUmJygpKissLS
4vMDEyMzQ1Njc4OTo7PD0+P0BBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWltcXV5fYGFi
Y2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6e3x9fn+AgYKDhIWGh4iJiouMjY6PkJGSk5SVlp
eYmZqbnJ2en6ChoqOkpaanqKmqq6ytrq+wsbKztLW2t7i5uru8vb6/wMHCw8TFxsfIycrL
zM3Oz9DR0tPU1dbX2Nna29zd3t/g4eLj5OXm5+jp6uvs7e7v8PHy8/T19vf4+fr7/P3+/w
==</Base64>
<BinHex>000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E
1F202122232425262728292A2B2C2D2E2F303132333435363738393A3B3C3D3E3F4041
42434445464748494A4B4C4D4E4F505152535455565758595A5B5C5D5E5F6061626364
65666768696A6B6C6D6E6F707172737475767778797A7B7C7D7E7F8081828384858687
88898A8B8C8D8E8F909192939495969798999A9B9C9D9E9FA0A1A2A3A4A5A6A7A8A9AA
ABACADAEAFB0B1B2B3B4B5B6B7B8B9BABBBCBDBEBFC0C1C2C3C4C5C6C7C8C9CACBCCCD
CECFD0D1D2D3D4D5D6D7D8D9DADBDCDDDEDFE0E1E2E3E4E5E6E7E8E9EAEBECEDEEEFF0
F1F2F3F4F5F6F7F8F9FAFBFCFDFEFF</BinHex>
</data>
설명
참고
.NET Framework 2.0부터 새 기능을 활용하기 위해 메서드를 사용하여 XmlReader.Create 인스턴스를 만드는 XmlReader 것이 좋습니다.
마찬가지로 ReadChars이 메서드를 연속적으로 호출하여 포함된 텍스트의 큰 스트림을 읽을 수 있습니다. Base64 콘텐츠를 디코딩하고 디코딩된 이진 바이트(예: 인라인 Base64로 인코딩된 GIF 이미지)를 버퍼에 반환합니다. RFC 1521을 참조하세요. ( 메모 요청 웹 사이트에서 RFC를 가져올 수 있습니다.)