UTF32Encoding.GetMaxByteCount メソッド
アセンブリ: mscorlib (mscorlib.dll 内)

Dim instance As UTF32Encoding Dim charCount As Integer Dim returnValue As Integer returnValue = instance.GetMaxByteCount(charCount)
戻り値
指定した文字数をエンコードすることによって生成される最大バイト数。


GetBytes が生成したバイトを格納するために必要な正確な配列サイズを計算するには、GetByteCount を使用します。最大配列サイズを計算するには、GetMaxByteCount を使用します。通常、GetMaxByteCount メソッドの方が高速に実行されるのに対し、GetByteCount メソッドの方が使用メモリが少なくて済みます。

次のコード例は、文字列のエンコードに必要なバイト数を確認し、文字列を実際にエンコードして、結果のバイトを表示します。
Imports System Imports System.Text Imports Microsoft.VisualBasic Public Class SamplesUTF32Encoding Public Shared Sub Main() ' The characters to encode: ' Latin Small Letter Z (U+007A) ' Latin Small Letter A (U+0061) ' Combining Breve (U+0306) ' Latin Small Letter AE With Acute (U+01FD) ' Greek Small Letter Beta (U+03B2) ' a high-surrogate value (U+D8FF) ' a low-surrogate value (U+DCFF) Dim myStr As String = "za" & ChrW(&H0306) & ChrW(&H01FD) & ChrW(&H03B2) & ChrW(&HD8FF) & ChrW(&HDCFF) ' Create instances of different encodings. Dim u7 As New UTF7Encoding() Dim u8Nobom As New UTF8Encoding(False, True) Dim u8Bom As New UTF8Encoding(True, True) Dim u32Nobom As New UTF32Encoding(False, False, True) Dim u32Bom As New UTF32Encoding(False, True, True) ' Get the byte counts and the bytes. PrintCountsAndBytes(myStr, u7) PrintCountsAndBytes(myStr, u8Nobom) PrintCountsAndBytes(myStr, u8Bom) PrintCountsAndBytes(myStr, u32Nobom) PrintCountsAndBytes(myStr, u32Bom) End Sub 'Main Public Shared Sub PrintCountsAndBytes(s As String, enc As Encoding) ' Display the name of the encoding used. Console.Write("{0,-25} :", enc.ToString()) ' Display the exact byte count. Dim iBC As Integer = enc.GetByteCount(s) Console.Write(" {0,-3}", iBC) ' Display the maximum byte count. Dim iMBC As Integer = enc.GetMaxByteCount(s.Length) Console.Write(" {0,-3} :", iMBC) ' Get the byte order mark, if any. Dim preamble As Byte() = enc.GetPreamble() ' Combine the preamble and the encoded bytes. ' NOTE: In Visual Basic, arrays contain one extra element by default. ' The following line creates an array with the exact number of elements required. Dim bytes(preamble.Length + iBC - 1) As Byte Array.Copy(preamble, bytes, preamble.Length) enc.GetBytes(s, 0, s.Length, bytes, preamble.Length) ' Display all the encoded bytes. PrintHexBytes(bytes) End Sub 'PrintCountsAndBytes Public Shared Sub PrintHexBytes(bytes() As Byte) If bytes Is Nothing OrElse bytes.Length = 0 Then Console.WriteLine("<none>") Else Dim i As Integer For i = 0 To bytes.Length - 1 Console.Write("{0:X2} ", bytes(i)) Next i Console.WriteLine() End If End Sub 'PrintHexBytes End Class 'SamplesUTF32Encoding 'This code produces the following output. ' 'System.Text.UTF7Encoding : 18 23 :7A 61 2B 41 77 59 42 2F 51 4F 79 32 50 2F 63 2F 77 2D 'System.Text.UTF8Encoding : 12 24 :7A 61 CC 86 C7 BD CE B2 F1 8F B3 BF 'System.Text.UTF8Encoding : 12 24 :EF BB BF 7A 61 CC 86 C7 BD CE B2 F1 8F B3 BF 'System.Text.UTF32Encoding : 24 28 :7A 00 00 00 61 00 00 00 06 03 00 00 FD 01 00 00 B2 03 00 00 FF FC 04 00 'System.Text.UTF32Encoding : 24 28 :FF FE 00 00 7A 00 00 00 61 00 00 00 06 03 00 00 FD 01 00 00 B2 03 00 00 FF FC 04 00
using System; using System.Text; public class SamplesUTF32Encoding { public static void Main() { // The characters to encode: // Latin Small Letter Z (U+007A) // Latin Small Letter A (U+0061) // Combining Breve (U+0306) // Latin Small Letter AE With Acute (U+01FD) // Greek Small Letter Beta (U+03B2) // a high-surrogate value (U+D8FF) // a low-surrogate value (U+DCFF) String myStr = "za\u0306\u01FD\u03B2\uD8FF\uDCFF"; // Create instances of different encodings. UTF7Encoding u7 = new UTF7Encoding(); UTF8Encoding u8Nobom = new UTF8Encoding( false, true ); UTF8Encoding u8Bom = new UTF8Encoding( true, true ); UTF32Encoding u32Nobom = new UTF32Encoding( false, false, true ); UTF32Encoding u32Bom = new UTF32Encoding( false, true, true ); // Get the byte counts and the bytes. PrintCountsAndBytes( myStr, u7 ); PrintCountsAndBytes( myStr, u8Nobom ); PrintCountsAndBytes( myStr, u8Bom ); PrintCountsAndBytes( myStr, u32Nobom ); PrintCountsAndBytes( myStr, u32Bom ); } public static void PrintCountsAndBytes( String s, Encoding enc ) { // Display the name of the encoding used. Console.Write( "{0,-25} :", enc.ToString() ); // Display the exact byte count. int iBC = enc.GetByteCount( s ); Console.Write( " {0,-3}", iBC ); // Display the maximum byte count. int iMBC = enc.GetMaxByteCount( s.Length ); Console.Write( " {0,-3} :", iMBC ); // Get the byte order mark, if any. byte[] preamble = enc.GetPreamble(); // Combine the preamble and the encoded bytes. byte[] bytes = new byte[preamble.Length + iBC]; Array.Copy( preamble, bytes, preamble.Length ); enc.GetBytes( s, 0, s.Length, bytes, preamble.Length ); // Display all the encoded bytes. PrintHexBytes( bytes ); } public static void PrintHexBytes( byte[] bytes ) { if (( bytes == null ) || ( bytes.Length == 0 )) Console.WriteLine( "<none>" ); else { for ( int i = 0; i < bytes.Length; i++ ) Console.Write( "{0:X2} ", bytes[i] ); Console.WriteLine(); } } } /* This code produces the following output. System.Text.UTF7Encoding : 18 23 :7A 61 2B 41 77 59 42 2F 51 4F 79 32 50 2F 63 2F 77 2D System.Text.UTF8Encoding : 12 24 :7A 61 CC 86 C7 BD CE B2 F1 8F B3 BF System.Text.UTF8Encoding : 12 24 :EF BB BF 7A 61 CC 86 C7 BD CE B2 F1 8F B3 BF System.Text.UTF32Encoding : 24 28 :7A 00 00 00 61 00 00 00 06 03 00 00 FD 01 00 00 B2 03 00 00 FF FC 04 00 System.Text.UTF32Encoding : 24 28 :FF FE 00 00 7A 00 00 00 61 00 00 00 06 03 00 00 FD 01 00 00 B2 03 00 00 FF FC 04 00 */
using namespace System; using namespace System::Text; void PrintCountsAndBytes( String^ s, Encoding^ enc ); void PrintHexBytes( array<Byte>^bytes ); int main() { // The characters to encode: // Latin Small Letter Z (U+007A) // Latin Small Letter A (U+0061) // Combining Breve (U+0306) // Latin Small Letter AE With Acute (U+01FD) // Greek Small Letter Beta (U+03B2) // a high-surrogate value (U+D8FF) // a low-surrogate value (U+DCFF) String^ myStr = L"za\u0306\u01FD\u03B2\xD8FF\xDCFF"; // Create instances of different encodings. UTF7Encoding^ u7 = gcnew UTF7Encoding; UTF8Encoding^ u8Nobom = gcnew UTF8Encoding( false,true ); UTF8Encoding^ u8Bom = gcnew UTF8Encoding( true,true ); UTF32Encoding ^ u32Nobom = gcnew UTF32Encoding( false,false,true ); UTF32Encoding ^ u32Bom = gcnew UTF32Encoding( false,true,true ); // Get the byte counts and the bytes. PrintCountsAndBytes( myStr, u7 ); PrintCountsAndBytes( myStr, u8Nobom ); PrintCountsAndBytes( myStr, u8Bom ); PrintCountsAndBytes( myStr, u32Nobom ); PrintCountsAndBytes( myStr, u32Bom ); } void PrintCountsAndBytes( String^ s, Encoding^ enc ) { // Display the name of the encoding used. Console::Write( "{0,-25} :", enc ); // Display the exact byte count. int iBC = enc->GetByteCount( s ); Console::Write( " {0,-3}", iBC ); // Display the maximum byte count. int iMBC = enc->GetMaxByteCount( s->Length ); Console::Write( " {0,-3} :", iMBC ); // Get the byte order mark, if any. array<Byte>^preamble = enc->GetPreamble(); // Combine the preamble and the encoded bytes. array<Byte>^bytes = gcnew array<Byte>(preamble->Length + iBC); Array::Copy( preamble, bytes, preamble->Length ); enc->GetBytes( s, 0, s->Length, bytes, preamble->Length ); // Display all the encoded bytes. PrintHexBytes( bytes ); } void PrintHexBytes( array<Byte>^bytes ) { if ( (bytes == nullptr) || (bytes->Length == 0) ) Console::WriteLine( "<none>" ); else { for ( int i = 0; i < bytes->Length; i++ ) Console::Write( "{0:X2} ", bytes[ i ] ); Console::WriteLine(); } } /* This code produces the following output. System.Text.UTF7Encoding : 18 23 :7A 61 2B 41 77 59 42 2F 51 4F 79 32 50 2F 63 2F 77 2D System.Text.UTF8Encoding : 12 24 :7A 61 CC 86 C7 BD CE B2 F1 8F B3 BF System.Text.UTF8Encoding : 12 24 :EF BB BF 7A 61 CC 86 C7 BD CE B2 F1 8F B3 BF System.Text.UTF32Encoding : 24 28 :7A 00 00 00 61 00 00 00 06 03 00 00 FD 01 00 00 B2 03 00 00 FF FC 04 00 System.Text.UTF32Encoding : 24 28 :FF FE 00 00 7A 00 00 00 61 00 00 00 06 03 00 00 FD 01 00 00 B2 03 00 00 FF FC 04 00 */
import System.*; import System.Text.*; public class SamplesUTF32Encoding { public static void main(String[] args) { // The characters to encode: // Latin Small Letter Z (U+007A) // Latin Small Letter A (U+0061) // Combining Breve (U+0306) // Latin Small Letter AE With Acute (U+01FD) // Greek Small Letter Beta (U+03B2) // a high-surrogate value (U+D8FF) // a low-surrogate value (U+DCFF) String myStr = "za\u0306\u01FD\u03B2\uD8FF\uDCFF"; // Create instances of different encodings. UTF7Encoding u7 = new UTF7Encoding(); UTF8Encoding u8Nobom = new UTF8Encoding(false, true); UTF8Encoding u8Bom = new UTF8Encoding(true, true); UTF32Encoding u32Nobom = new UTF32Encoding(false, false, true); UTF32Encoding u32Bom = new UTF32Encoding(false, true, true); // Get the byte counts and the bytes. PrintCountsAndBytes(myStr, u7); PrintCountsAndBytes(myStr, u8Nobom); PrintCountsAndBytes(myStr, u8Bom); PrintCountsAndBytes(myStr, u32Nobom); PrintCountsAndBytes(myStr, u32Bom); } //main public static void PrintCountsAndBytes(String s, Encoding enc) { // Display the name of the encoding used. Console.Write("{0,-25} :", enc.ToString()); // Display the exact byte count. int iBC = enc.GetByteCount(s); Console.Write(" {0,-3}", String.valueOf(iBC)); // Display the maximum byte count. int iMBC = enc.GetMaxByteCount(s.get_Length()); Console.Write(" {0,-3} :", String.valueOf(iMBC)); // Get the byte order mark, if any. ubyte preamble[] = enc.GetPreamble(); // Combine the preamble and the encoded bytes. ubyte bytes[] = new ubyte[preamble.length + iBC]; Array.Copy(preamble, bytes, preamble.length); enc.GetBytes(s, 0, s.get_Length(), bytes, preamble.length); // Display all the encoded bytes. PrintHexBytes(bytes); } //PrintCountsAndBytes public static void PrintHexBytes(ubyte bytes[]) { if(bytes == null || bytes.length == 0) { Console.WriteLine("<none>"); } else { for(int i = 0; i < bytes.length; i++) { Console.Write("{0:X2} ", ((System.Byte)bytes[i]).ToString("X2")); } Console.WriteLine(); } } //PrintHexBytes } //SamplesUTF32Encoding /* This code produces the following output. System.Text.UTF7Encoding : 18 23 :7A 61 2B 41 77 59 42 2F 51 4F 79 32 50 2F 63 2F 77 2D System.Text.UTF8Encoding : 12 24 :7A 61 CC 86 C7 BD CE B2 F1 8F B3 BF System.Text.UTF8Encoding : 12 24 :EF BB BF 7A 61 CC 86 C7 BD CE B2 F1 8F B3 BF System.Text.UTF32Encoding : 24 28 :7A 00 00 00 61 00 00 00 06 03 00 00 FD 01 00 00 B2 03 00 00 FF FC 04 00 System.Text.UTF32Encoding : 24 28 :FF FE 00 00 7A 00 00 00 61 00 00 00 06 03 00 00 FD 01 00 00 B2 03 00 00 FF FC 04 00 */

Windows 98, Windows 2000 SP4, Windows Millennium Edition, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition
開発プラットフォームの中には、.NET Framework によってサポートされていないバージョンがあります。サポートされているバージョンについては、「システム要件」を参照してください。


- UTF32Encoding.GetMaxByteCount メソッドのページへのリンク