派生クラスでオーバーライドされた場合は、バイト配列内のバイトの範囲を文字配列内の文字の範囲にデコードします。
Overloads Public MustOverride Function GetChars( _
ByVal bytes() As Byte, _ ByVal byteIndex As Integer, _ ByVal byteCount As Integer, _ ByVal chars() As Char, _ ByVal charIndex As Integer _) As Integer
[C#]
public abstract int GetChars(byte[] bytes,intbyteIndex,intbyteCount,char[] chars,intcharIndex);
[C++]
public: virtual int GetChars(unsigned charbytes __gc[],intbyteIndex,intbyteCount,__wchar_tchars __gc[],intcharIndex) = 0;
[JScript]
public abstract function GetChars(
bytes : Byte[],byteIndex : int,byteCount : int,chars : Char[],charIndex : int) : int;
パラメータ
- bytes
デコードするバイト配列。 - byteIndex
デコードするバイト配列の開始インデックス。 - byteCount
デコードするバイト数。 - chars
デコードされた結果が格納されている文字配列。 - charIndex
文字配列内の、デコードされた結果の開始インデックス。
戻り値
文字配列に格納されている文字数。
例外
例外の種類 | 条件 |
---|---|
ArgumentException | chars には、デコードされた文字を格納するために必要な領域がありません。 |
ArgumentNullException | bytes または chars が null 参照 (Visual Basic では Nothing) です。 |
ArgumentOutOfRangeException | byteIndex, byteCount または charIndex が 0 未満です。
または byteIndex + byteCount が bytes の長さを超えています。 または charIndex が chars の長さを超えています。 |
解説
GetChars メソッドは、変換の間の状態を維持しません。このメソッドは、1 回の操作でバイトおよび文字のブロックを完全に変換するためのメソッドです。バイトが複数のバイト配列にわたる可能性がある場合 (つまり、単一の文字に対応するバイトが、1 つのバイト配列の末尾と別のバイト配列の先頭に存在する可能性がある場合) は、複数の呼び出し間の状態を維持する Decoder クラスを使用します。
GetChars メソッドは、呼び出し元にバッファ先を指定するよう要求し、そのバッファが十分な大きさで変換の結果すべてを保持できるようにします。アプリケーションは、 GetCharCount または GetMaxCharCount を使用して、バッファ先として必要なサイズを計算できます。
このメソッドを使用すると、指定した範囲のバイトに対して生成される正確な文字数を確認できます。または、 GetMaxCharCount メソッドを使用すると、実際のバイト値には関係なく、指定したバイト数に対して生成される最大文字数を確認できます。
使用例
Imports System
Imports System.Text
Imports Microsoft.VisualBasic
Namespace Convert_Example
Class MyConvertExampleClass
Shared Sub Main()
Dim unicodeString As String = "This string contains the unicode character Pi(" & ChrW(&H03A0) & ")"
' Create two different encodings.
Dim ascii As Encoding = Encoding.ASCII
Dim [unicode] As Encoding = Encoding.Unicode
' Convert the string into a byte[].
Dim unicodeBytes As Byte() = [unicode].GetBytes(unicodeString)
' Perform the conversion from one encoding to the other.
Dim asciiBytes As Byte() = Encoding.Convert([unicode], ascii, unicodeBytes)
' Convert the new byte[] into a char[] and then into a string.
' This is a slightly different approach to converting to illustrate
' the use of GetCharCount/GetChars.
Dim asciiChars(ascii.GetCharCount(asciiBytes, 0, asciiBytes.Length)) As Char
ascii.GetChars(asciiBytes, 0, asciiBytes.Length, asciiChars, 0)
Dim asciiString As New String(asciiChars)
' Display the strings created before and after the conversion.
Console.WriteLine("Original string: {0}", unicodeString)
Console.WriteLine("Ascii converted string: {0}", asciiString)
End Sub
End Class
End Namespace
[C#]
using System;
using System.Text;
namespace ConvertExample
{
class ConvertExampleClass
{
static void Main()
{
string unicodeString = "This string contains the unicode character Pi(\u03a0)";
// Create two different encodings.
Encoding ascii = Encoding.ASCII;
Encoding unicode = Encoding.Unicode;
// Convert the string into a byte[].
byte[] unicodeBytes = unicode.GetBytes(unicodeString);
// Perform the conversion from one encoding to the other.
byte[] asciiBytes = Encoding.Convert(unicode, ascii, unicodeBytes);
// Convert the new byte[] into a char[] and then into a string.
// This is a slightly different approach to converting to illustrate
// the use of GetCharCount/GetChars.
char[] asciiChars = new char[ascii.GetCharCount(asciiBytes, 0, asciiBytes.Length)];
ascii.GetChars(asciiBytes, 0, asciiBytes.Length, asciiChars, 0);
string asciiString = new string(asciiChars);
// Display the strings created before and after the conversion.
Console.WriteLine("Original string: {0}", unicodeString);
Console.WriteLine("Ascii converted string: {0}", asciiString);
}
}
}
[C++]
#using <mscorlib.dll>
using namespace System;
using namespace System::Text;
int main()
{
String* unicodeString = S"This string contains the unicode character Pi(\u03a0)";
// Create two different encodings.
Encoding * ascii = Encoding::ASCII;
Encoding * unicode = Encoding::Unicode;
// Convert the string into a Byte->Item[].
Byte unicodeBytes[] = unicode -> GetBytes(unicodeString);
// Perform the conversion from one encoding to the other.
Byte asciiBytes[] = Encoding::Convert(unicode, ascii, unicodeBytes);
// Convert the new Byte into[] a char and[] then into a string.
// This is a slightly different approach to converting to illustrate
// the use of GetCharCount/GetChars.
Char asciiChars[] = new Char[ascii -> GetCharCount(asciiBytes, 0, asciiBytes -> Length)];
ascii -> GetChars(asciiBytes, 0, asciiBytes->Length, asciiChars, 0);
String* asciiString = new String(asciiChars);
// Display the strings created before and after the conversion.
Console::WriteLine(S"Original String*: {0}", unicodeString);
Console::WriteLine(S"Ascii converted String*: {0}", asciiString);
}
[JScript] JScript のサンプルはありません。Visual Basic、C#、および C++ のサンプルを表示するには、このページの左上隅にある言語のフィルタ ボタン をクリックします。
必要条件
プラットフォーム: Windows 98, Windows NT 4.0, Windows Millennium Edition, Windows 2000, Windows XP Home Edition, Windows XP Professional, Windows Server 2003 ファミリ, .NET Compact Framework - Windows CE .NET, Common Language Infrastructure (CLI) Standard
参照
Encoding クラス | Encoding メンバ | System.Text 名前空間 | Encoding.GetChars オーバーロードの一覧 | GetCharCount | GetMaxCharCount