Char.ConvertFromUtf32(Int32) Método
Definição
Importante
Algumas informações se referem a produtos de pré-lançamento que podem ser substancialmente modificados antes do lançamento. A Microsoft não oferece garantias, expressas ou implícitas, das informações aqui fornecidas.
Converte o ponto de código Unicode especificado em uma cadeia de caracteres codificada para UTF-16.
public:
static System::String ^ ConvertFromUtf32(int utf32);
public static string ConvertFromUtf32 (int utf32);
static member ConvertFromUtf32 : int -> string
Public Shared Function ConvertFromUtf32 (utf32 As Integer) As String
Parâmetros
- utf32
- Int32
Um ponto de código Unicode de 21 bits.
Retornos
Uma cadeia de caracteres que consiste em um objeto Char ou em um par alternativo de objetos Char equivalente ao ponto de código especificado pelo parâmetro utf32
.
Exceções
utf32
não um ponto de código Unicode de 21 bits válido que varia de U+0 a U+10FFFF, excluindo o intervalo do par alternativo de U+D800 a U+DFFF.
Exemplos
O exemplo de código a seguir demonstra os ConvertToUtf32 métodos e ConvertFromUtf32 .
// This example demonstrates the Char.ConvertFromUtf32() method
// and Char.ConvertToUtf32() overloads.
using namespace System;
void Show( String^ s )
{
// Console::Write( "0x{0:X}, 0x{1:X}", (int)s->get_Chars( 0 ), (int)s->get_Chars( 1 ) );
Console::Write( "0x{0:X}, 0x{1:X}", (int)s[ 0 ], (int)s[ 1 ] );
}
int main()
{
int music = 0x1D161; //U+1D161 = MUSICAL SYMBOL SIXTEENTH NOTE
String^ s1;
String^ comment1a = "Create a UTF-16 encoded string from a code point.";
String^ comment1b = "Create a code point from a surrogate pair at a certain position in a string.";
String^ comment1c = "Create a code point from a high surrogate and a low surrogate code point.";
// -------------------------------------------------------------------
// Convert the code point U+1D161 to UTF-16. The UTF-16 equivalent of
// U+1D161 is a surrogate pair with hexadecimal values D834 and DD61.
Console::WriteLine( comment1a );
s1 = Char::ConvertFromUtf32( music );
Console::Write( " 1a) 0x{0:X} => ", music );
Show( s1 );
Console::WriteLine();
// Convert the surrogate pair in the string at index position
// zero to a code point.
Console::WriteLine( comment1b );
music = Char::ConvertToUtf32( s1, 0 );
Console::Write( " 1b) " );
Show( s1 );
Console::WriteLine( " => 0x{0:X}", music );
// Convert the high and low characters in the surrogate pair into a code point.
Console::WriteLine( comment1c );
music = Char::ConvertToUtf32( s1[ 0 ], s1[ 1 ] );
Console::Write( " 1c) " );
Show( s1 );
Console::WriteLine( " => 0x{0:X}", music );
}
/*
This example produces the following results:
Create a UTF-16 encoded string from a code point.
1a) 0x1D161 => 0xD834, 0xDD61
Create a code point from a surrogate pair at a certain position in a string.
1b) 0xD834, 0xDD61 => 0x1D161
Create a code point from a high surrogate and a low surrogate code point.
1c) 0xD834, 0xDD61 => 0x1D161
*/
// This example demonstrates the Char.ConvertFromUtf32() method
// and Char.ConvertToUtf32() overloads.
using System;
class Sample
{
public static void Main()
{
int letterA = 0x0041; //U+00041 = LATIN CAPITAL LETTER A
int music = 0x1D161; //U+1D161 = MUSICAL SYMBOL SIXTEENTH NOTE
string s1;
string comment = "Create a UTF-16 encoded string from a code point.";
string comment1b = "Create a code point from a UTF-16 encoded string.";
string comment2b = "Create a code point from a surrogate pair at a certain position in a string.";
string comment2c = "Create a code point from a high surrogate and a low surrogate code point.";
// Convert code point U+0041 to UTF-16. The UTF-16 equivalent of
// U+0041 is a Char with hexadecimal value 0041.
Console.WriteLine(comment);
s1 = Char.ConvertFromUtf32(letterA);
Console.Write(" 1a) 0x{0:X} => ", letterA);
Show(s1);
Console.WriteLine();
// Convert the lone UTF-16 character to a code point.
Console.WriteLine(comment1b);
letterA = Char.ConvertToUtf32(s1, 0);
Console.Write(" 1b) ");
Show(s1);
Console.WriteLine(" => 0x{0:X}", letterA);
Console.WriteLine();
// -------------------------------------------------------------------
// Convert the code point U+1D161 to UTF-16. The UTF-16 equivalent of
// U+1D161 is a surrogate pair with hexadecimal values D834 and DD61.
Console.WriteLine(comment);
s1 = Char.ConvertFromUtf32(music);
Console.Write(" 2a) 0x{0:X} => ", music);
Show(s1);
Console.WriteLine();
// Convert the surrogate pair in the string at index position
// zero to a code point.
Console.WriteLine(comment2b);
music = Char.ConvertToUtf32(s1, 0);
Console.Write(" 2b) ");
Show(s1);
Console.WriteLine(" => 0x{0:X}", music);
// Convert the high and low characters in the surrogate pair into a code point.
Console.WriteLine(comment2c);
music = Char.ConvertToUtf32(s1[0], s1[1]);
Console.Write(" 2c) ");
Show(s1);
Console.WriteLine(" => 0x{0:X}", music);
}
private static void Show(string s)
{
for (int x = 0; x < s.Length; x++)
{
Console.Write("0x{0:X}{1}",
(int)s[x],
((x == s.Length-1)? String.Empty : ", "));
}
}
}
/*
This example produces the following results:
Create a UTF-16 encoded string from a code point.
1a) 0x41 => 0x41
Create a code point from a UTF-16 encoded string.
1b) 0x41 => 0x41
Create a UTF-16 encoded string from a code point.
2a) 0x1D161 => 0xD834, 0xDD61
Create a code point from a surrogate pair at a certain position in a string.
2b) 0xD834, 0xDD61 => 0x1D161
Create a code point from a high surrogate and a low surrogate code point.
2c) 0xD834, 0xDD61 => 0x1D161
*/
open System
let show (s: string) =
for x = 0 to s.Length - 1 do
printf $"""0x{int s[x]:X}{if x = s.Length - 1 then String.Empty else ", "}"""
[<EntryPoint>]
let main _ =
let letterA = 0x0041 //U+00041 = LATIN CAPITAL LETTER A
let music = 0x1D161 //U+1D161 = MUSICAL SYMBOL SIXTEENTH NOTE
let comment = "Create a UTF-16 encoded string from a code point."
let comment1b = "Create a code point from a UTF-16 encoded string."
let comment2b = "Create a code point from a surrogate pair at a certain position in a string."
let comment2c = "Create a code point from a high surrogate and a low surrogate code point."
// Convert code point U+0041 to UTF-16. The UTF-16 equivalent of
// U+0041 is a Char with hexadecimal value 0041.
printfn $"{comment}"
let s1 = Char.ConvertFromUtf32 letterA
printf $" 1a) 0x{letterA:X} => "
show s1
printfn ""
// Convert the lone UTF-16 character to a code point.
printfn $"{comment1b}"
let letterA = Char.ConvertToUtf32(s1, 0)
printf " 1b) "
show s1
printfn $" => 0x{letterA:X}"
printfn ""
// -------------------------------------------------------------------
// Convert the code point U+1D161 to UTF-16. The UTF-16 equivalent of
// U+1D161 is a surrogate pair with hexadecimal values D834 and DD61.
printfn $"{comment}"
let s1 = Char.ConvertFromUtf32 music
printf $" 2a) 0x{music:X} => "
show s1
printfn ""
// Convert the surrogate pair in the string at index position
// zero to a code point.
printfn $"{comment2b}"
let music = Char.ConvertToUtf32(s1, 0)
printf " 2b) "
show s1
printfn $" => 0x{music:X}"
// Convert the high and low characters in the surrogate pair into a code point.
printfn $"{comment2c}"
let music = Char.ConvertToUtf32(s1[0], s1[1])
printf " 2c) "
show s1
printfn $" => 0x{music:X}"
0
// This example produces the following results:
//
// Create a UTF-16 encoded string from a code point.
// 1a) 0x41 => 0x41
// Create a code point from a UTF-16 encoded string.
// 1b) 0x41 => 0x41
//
// Create a UTF-16 encoded string from a code point.
// 2a) 0x1D161 => 0xD834, 0xDD61
// Create a code point from a surrogate pair at a certain position in a string.
// 2b) 0xD834, 0xDD61 => 0x1D161
// Create a code point from a high surrogate and a low surrogate code point.
// 2c) 0xD834, 0xDD61 => 0x1D161
Class Sample
Public Shared Sub Main()
Dim letterA As Integer = &H41 'U+00041 = LATIN CAPITAL LETTER A
Dim music As Integer = &H1D161 'U+1D161 = MUSICAL SYMBOL SIXTEENTH NOTE
Dim s1 As String
Dim comment As String = "Create a UTF-16 encoded string from a code point."
Dim comment1b As String = "Create a code point from a UTF-16 encoded string."
Dim comment2b As String = "Create a code point from a surrogate pair at a certain position in a string."
Dim comment2c As String = "Create a code point from a high surrogate and a low surrogate code point."
' Convert code point U+0041 to UTF-16. The UTF-16 equivalent of
' U+0041 is a Char with hexadecimal value 0041.
Console.WriteLine(comment)
s1 = [Char].ConvertFromUtf32(letterA)
Console.Write(" 1a) 0x{0:X} => ", letterA)
Show(s1)
Console.WriteLine()
' Convert the lone UTF-16 character to a code point.
Console.WriteLine(comment1b)
letterA = [Char].ConvertToUtf32(s1, 0)
Console.Write(" 1b) ")
Show(s1)
Console.WriteLine(" => 0x{0:X}", letterA)
Console.WriteLine()
' -------------------------------------------------------------------
' Convert the code point U+1D161 to UTF-16. The UTF-16 equivalent of
' U+1D161 is a surrogate pair with hexadecimal values D834 and DD61.
Console.WriteLine(comment)
s1 = [Char].ConvertFromUtf32(music)
Console.Write(" 2a) 0x{0:X} => ", music)
Show(s1)
Console.WriteLine()
' Convert the surrogate pair in the string at index position
' zero to a code point.
Console.WriteLine(comment2b)
music = [Char].ConvertToUtf32(s1, 0)
Console.Write(" 2b) ")
Show(s1)
Console.WriteLine(" => 0x{0:X}", music)
' Convert the high and low characters in the surrogate pair into a code point.
Console.WriteLine(comment2c)
music = [Char].ConvertToUtf32(s1.Chars(0), s1.Chars(1))
Console.Write(" 2c) ")
Show(s1)
Console.WriteLine(" => 0x{0:X}", music)
End Sub
Private Shared Sub Show(s As String)
Dim x As Integer
If s.Length = 0 Then Exit Sub
For x = 0 To s.Length - 1
Console.Write("0x{0:X}{1}", _
AscW(s.Chars(x)), _
IIf(x = s.Length - 1, [String].Empty, ", "))
Next
End Sub
End Class
'
'This example produces the following results:
'
'Create a UTF-16 encoded string from a code point.
' 1a) 0x41 => 0x41
'Create a code point from a UTF-16 encoded string.
' 1b) 0x41 => 0x41
'
'Create a UTF-16 encoded string from a code point.
' 2a) 0x1D161 => 0xD834, 0xDD61
'Create a code point from a surrogate pair at a certain position in a string.
' 2b) 0xD834, 0xDD61 => 0x1D161
'Create a code point from a high surrogate and a low surrogate code point.
' 2c) 0xD834, 0xDD61 => 0x1D161
'
Comentários
Use esse método para converter um ponto de código Unicode de 21 bits em uma cadeia de caracteres codificada em UTF-16 antes de testar a cadeia de caracteres com métodos como IsLowSurrogate(Char) e IsHighSurrogate(Char).
Um ponto de código válido fora do BMP (Plano Multilíngue Básico) sempre produz um par alternativo válido. No entanto, um ponto de código válido dentro do BMP pode não produzir um resultado válido de acordo com o padrão Unicode porque nenhum processamento linguístico é usado na conversão. Por esse motivo, use a System.Text.UTF32Encoding classe para converter dados UTF-32 em massa em dados UTF-16 em massa.