XmlTextReader.ReadBinHex(Byte[], Int32, Int32) 方法
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
解碼 BinHex
並傳回已解碼的二進位位元組。
public:
int ReadBinHex(cli::array <System::Byte> ^ array, int offset, int len);
public int ReadBinHex (byte[] array, int offset, int len);
member this.ReadBinHex : byte[] * int * int -> int
Public Function ReadBinHex (array As Byte(), offset As Integer, len As Integer) As Integer
參數
- array
- Byte[]
位元組陣列,做為寫入已解碼之二進位位元組的緩衝區。
- offset
- Int32
對這個陣列進行以零為起始的索引,這個陣列指定這個方法可由何處開始寫入緩衝區。
- len
- Int32
要寫入緩衝區的位元組數目。
傳回
寫入緩衝區的位元組數目。
例外狀況
BinHex
序列無效。
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 ,您可以連續呼叫這個方法,以讀取大型內嵌文字資料流程。 它會譯 BinHex
碼內容,並將解碼的二進位位元組傳回 (,例如,內嵌 BinHex
編碼 GIF 影像) 緩衝區。