BitConverter.ToDouble Metoda

Definicja

Przeciążenia

ToDouble(ReadOnlySpan<Byte>)

Konwertuje zakres bajtów tylko do odczytu na wartość zmiennoprzecinkową o podwójnej precyzji.

ToDouble(Byte[], Int32)

Zwraca liczbę zmiennoprzecinkową o podwójnej precyzji przekonwertowaną z ośmiu bajtów w określonej pozycji w tablicy bajtów.

ToDouble(ReadOnlySpan<Byte>)

Konwertuje zakres bajtów tylko do odczytu na wartość zmiennoprzecinkową o podwójnej precyzji.

public:
 static double ToDouble(ReadOnlySpan<System::Byte> value);
public static double ToDouble (ReadOnlySpan<byte> value);
static member ToDouble : ReadOnlySpan<byte> -> double
Public Shared Function ToDouble (value As ReadOnlySpan(Of Byte)) As Double

Parametry

value
ReadOnlySpan<Byte>

Zakres tylko do odczytu zawierający bajty do konwersji.

Zwraca

Double

Wartość zmiennoprzecinkowa o podwójnej precyzji, która reprezentuje przekonwertowane bajty.

Wyjątki

Długość value elementu jest mniejsza niż długość Double wartości.

Dotyczy

ToDouble(Byte[], Int32)

Zwraca liczbę zmiennoprzecinkową o podwójnej precyzji przekonwertowaną z ośmiu bajtów w określonej pozycji w tablicy bajtów.

public:
 static double ToDouble(cli::array <System::Byte> ^ value, int startIndex);
public static double ToDouble (byte[] value, int startIndex);
static member ToDouble : byte[] * int -> double
Public Shared Function ToDouble (value As Byte(), startIndex As Integer) As Double

Parametry

value
Byte[]

Tablica bajtów zawierająca osiem bajtów do przekonwertowania.

startIndex
Int32

Pozycja początkowa w obrębie value.

Zwraca

Double

Liczba zmiennoprzecinkowa o podwójnej precyzji utworzona przez osiem bajtów rozpoczynających się od startIndex.

Wyjątki

startIndex jest większa lub równa długości value minus 7 i jest mniejsza lub równa długości value minus 1.

value to null.

startIndex jest mniejsza niż zero lub większa niż długość value minus 1.

Przykłady

Poniższy przykład kodu konwertuje elementy Byte tablic na Double wartości za pomocą ToDouble metody .

// Example of the BitConverter::ToDouble method.
using namespace System;

// Convert eight byte array elements to a double and display it.
void BAToDouble( array<unsigned char>^bytes, int index )
{
   double value = BitConverter::ToDouble( bytes, index );
   Console::WriteLine( "{0,5}{1,27}{2,27:E16}", index, BitConverter::ToString( bytes, index, 8 ), value );
}


// Display a byte array, using multiple lines if necessary.
void WriteMultiLineByteArray( array<unsigned char>^bytes )
{
   const int rowSize = 20;
   int iter;
   Console::WriteLine( "initial unsigned char array" );
   Console::WriteLine( "---------------------------" );
   for ( iter = 0; iter < bytes->Length - rowSize; iter += rowSize )
   {
      Console::Write( BitConverter::ToString( bytes, iter, rowSize ) );
      Console::WriteLine( "-" );

   }
   Console::WriteLine( BitConverter::ToString( bytes, iter ) );
   Console::WriteLine();
}

int main()
{
   array<unsigned char>^byteArray = {0,0,0,0,0,0,0,0,240,63,0,0,0,0,0,224,111,64,0,0,224,255,255,255,239,65,0,0,0,0,0,0,112,63,0,0,0,0,0,0,240,61,223,136,30,28,254,116,170,1,250,89,140,66,202,192,243,63,251,89,140,66,202,192,243,63,252,89,140,66,202,192,243,63,82,211,187,188,232,126,61,126,255,255,255,255,255,255,239,255,255,255,255,255,255,239,127,1,0,0,0,0,0,0,0,248,255,0,0,0,0,0,0,240,255,0,0,0,0,0,0,240,127};
   Console::WriteLine( "This example of the BitConverter::ToDouble( unsigned "
   "char[ ], int ) \nmethod generates the following output. It "
   "converts elements of a \nbyte array to double values.\n" );
   WriteMultiLineByteArray( byteArray );
   Console::WriteLine( "{0,5}{1,27}{2,27:E16}", "index", "array elements", "double" );
   Console::WriteLine( "{0,5}{1,27}{2,27:E16}", "-----", "--------------", "------" );
   
   // Convert byte array elements to double values.
   BAToDouble( byteArray, 0 );
   BAToDouble( byteArray, 2 );
   BAToDouble( byteArray, 10 );
   BAToDouble( byteArray, 18 );
   BAToDouble( byteArray, 26 );
   BAToDouble( byteArray, 34 );
   BAToDouble( byteArray, 42 );
   BAToDouble( byteArray, 50 );
   BAToDouble( byteArray, 58 );
   BAToDouble( byteArray, 66 );
   BAToDouble( byteArray, 74 );
   BAToDouble( byteArray, 82 );
   BAToDouble( byteArray, 89 );
   BAToDouble( byteArray, 97 );
   BAToDouble( byteArray, 99 );
   BAToDouble( byteArray, 107 );
   BAToDouble( byteArray, 115 );
}

/*
This example of the BitConverter.ToDouble( byte( ), int )
method generates the following output. It converts elements
of a byte array to double values.

initial byte array
------------------
00-00-00-00-00-00-00-00-F0-3F-00-00-00-00-00-E0-6F-40-00-00-
E0-FF-FF-FF-EF-41-00-00-00-00-00-00-70-3F-00-00-00-00-00-00-
F0-3D-DF-88-1E-1C-FE-74-AA-01-FA-59-8C-42-CA-C0-F3-3F-FB-59-
8C-42-CA-C0-F3-3F-FC-59-8C-42-CA-C0-F3-3F-52-D3-BB-BC-E8-7E-
3D-7E-FF-FF-FF-FF-FF-FF-EF-FF-FF-FF-FF-FF-FF-EF-7F-01-00-00-
00-00-00-00-00-F8-FF-00-00-00-00-00-00-F0-FF-00-00-00-00-00-
00-F0-7F

index             array elements                     double
-----             --------------                     ------
    0    00-00-00-00-00-00-00-00    0.0000000000000000E+000
    2    00-00-00-00-00-00-F0-3F    1.0000000000000000E+000
   10    00-00-00-00-00-E0-6F-40    2.5500000000000000E+002
   18    00-00-E0-FF-FF-FF-EF-41    4.2949672950000000E+009
   26    00-00-00-00-00-00-70-3F    3.9062500000000000E-003
   34    00-00-00-00-00-00-F0-3D    2.3283064365386963E-010
   42    DF-88-1E-1C-FE-74-AA-01    1.2345678901234500E-300
   50    FA-59-8C-42-CA-C0-F3-3F    1.2345678901234565E+000
   58    FB-59-8C-42-CA-C0-F3-3F    1.2345678901234567E+000
   66    FC-59-8C-42-CA-C0-F3-3F    1.2345678901234569E+000
   74    52-D3-BB-BC-E8-7E-3D-7E    1.2345678901234569E+300
   82    FF-FF-FF-FF-FF-FF-EF-FF   -1.7976931348623157E+308
   89    FF-FF-FF-FF-FF-FF-EF-7F    1.7976931348623157E+308
   97    01-00-00-00-00-00-00-00    4.9406564584124654E-324
   99    00-00-00-00-00-00-F8-FF                        NaN
  107    00-00-00-00-00-00-F0-FF                  -Infinity
  115    00-00-00-00-00-00-F0-7F                   Infinity
*/
// Example of the BitConverter.ToDouble method.
using System;

class BytesToDoubleDemo
{
    const string formatter = "{0,5}{1,27}{2,27:E16}";

    // Convert eight byte array elements to a double and display it.
    public static void BAToDouble( byte[ ] bytes, int index )
    {
        double value = BitConverter.ToDouble( bytes, index );

        Console.WriteLine( formatter, index,
            BitConverter.ToString( bytes, index, 8 ), value );
    }

    // Display a byte array, using multiple lines if necessary.
    public static void WriteMultiLineByteArray( byte[ ] bytes )
    {
        const int rowSize = 20;
        int iter;

        Console.WriteLine( "initial byte array" );
        Console.WriteLine( "------------------" );

        for( iter = 0; iter < bytes.Length - rowSize; iter += rowSize )
        {
            Console.Write(
                BitConverter.ToString( bytes, iter, rowSize ) );
            Console.WriteLine( "-" );
        }

        Console.WriteLine( BitConverter.ToString( bytes, iter ) );
        Console.WriteLine( );
    }

    public static void Main( )
    {
        byte[ ] byteArray = {
              0,   0,   0,   0,   0,   0,   0,   0, 240,  63,
              0,   0,   0,   0,   0, 224, 111,  64,   0,   0,
            224, 255, 255, 255, 239,  65,   0,   0,   0,   0,
              0,   0, 112,  63,   0,   0,   0,   0,   0,   0,
            240,  61, 223, 136,  30,  28, 254, 116, 170,   1,
            250,  89, 140,  66, 202, 192, 243,  63, 251,  89,
            140,  66, 202, 192, 243,  63, 252,  89, 140,  66,
            202, 192, 243,  63,  82, 211, 187, 188, 232, 126,
             61, 126, 255, 255, 255, 255, 255, 255, 239, 255,
            255, 255, 255, 255, 255, 239, 127,   1,   0,   0,
              0,   0,   0,   0,   0, 248, 255,   0,   0,   0,
              0,   0,   0, 240, 255,   0,   0,   0,   0,   0,
              0, 240, 127 };

        Console.WriteLine(
            "This example of the BitConverter.ToDouble( byte[ ], " +
            "int ) \nmethod generates the following output. It " +
            "converts elements \nof a byte array to double values.\n" );

        WriteMultiLineByteArray( byteArray );

        Console.WriteLine( formatter, "index", "array elements",
            "double" );
        Console.WriteLine( formatter, "-----", "--------------",
            "------" );

        // Convert byte array elements to double values.
        BAToDouble( byteArray, 0 );
        BAToDouble( byteArray, 2 );
        BAToDouble( byteArray, 10 );
        BAToDouble( byteArray, 18 );
        BAToDouble( byteArray, 26 );
        BAToDouble( byteArray, 34 );
        BAToDouble( byteArray, 42 );
        BAToDouble( byteArray, 50 );
        BAToDouble( byteArray, 58 );
        BAToDouble( byteArray, 66 );
        BAToDouble( byteArray, 74 );
        BAToDouble( byteArray, 82 );
        BAToDouble( byteArray, 89 );
        BAToDouble( byteArray, 97 );
        BAToDouble( byteArray, 99 );
        BAToDouble( byteArray, 107 );
        BAToDouble( byteArray, 115 );
    }
}

/*
This example of the BitConverter.ToDouble( byte[ ], int )
method generates the following output. It converts elements
of a byte array to double values.

initial byte array
------------------
00-00-00-00-00-00-00-00-F0-3F-00-00-00-00-00-E0-6F-40-00-00-
E0-FF-FF-FF-EF-41-00-00-00-00-00-00-70-3F-00-00-00-00-00-00-
F0-3D-DF-88-1E-1C-FE-74-AA-01-FA-59-8C-42-CA-C0-F3-3F-FB-59-
8C-42-CA-C0-F3-3F-FC-59-8C-42-CA-C0-F3-3F-52-D3-BB-BC-E8-7E-
3D-7E-FF-FF-FF-FF-FF-FF-EF-FF-FF-FF-FF-FF-FF-EF-7F-01-00-00-
00-00-00-00-00-F8-FF-00-00-00-00-00-00-F0-FF-00-00-00-00-00-
00-F0-7F

index             array elements                     double
-----             --------------                     ------
    0    00-00-00-00-00-00-00-00    0.0000000000000000E+000
    2    00-00-00-00-00-00-F0-3F    1.0000000000000000E+000
   10    00-00-00-00-00-E0-6F-40    2.5500000000000000E+002
   18    00-00-E0-FF-FF-FF-EF-41    4.2949672950000000E+009
   26    00-00-00-00-00-00-70-3F    3.9062500000000000E-003
   34    00-00-00-00-00-00-F0-3D    2.3283064365386963E-010
   42    DF-88-1E-1C-FE-74-AA-01    1.2345678901234500E-300
   50    FA-59-8C-42-CA-C0-F3-3F    1.2345678901234565E+000
   58    FB-59-8C-42-CA-C0-F3-3F    1.2345678901234567E+000
   66    FC-59-8C-42-CA-C0-F3-3F    1.2345678901234569E+000
   74    52-D3-BB-BC-E8-7E-3D-7E    1.2345678901234569E+300
   82    FF-FF-FF-FF-FF-FF-EF-FF   -1.7976931348623157E+308
   89    FF-FF-FF-FF-FF-FF-EF-7F    1.7976931348623157E+308
   97    01-00-00-00-00-00-00-00    4.9406564584124654E-324
   99    00-00-00-00-00-00-F8-FF                        NaN
  107    00-00-00-00-00-00-F0-FF                  -Infinity
  115    00-00-00-00-00-00-F0-7F                   Infinity
*/
open System

let print obj1 obj2 obj3 = printfn $"{obj1,5}{obj2,27}{obj3,27:E16}"

// Convert eight byte array elements to a double and display it.
let BAToDouble bytes index =
    let value = BitConverter.ToDouble(bytes, index)

    print index (BitConverter.ToString(bytes, index, 8)) value

// Display a byte array, using multiple lines if necessary.
let writeMultiLineByteArray (bytes: byte []) =
    let rowSize = 20

    printfn "initial byte array"
    printfn "------------------"

    let mutable iter = 0
    for i in 0 .. rowSize .. (bytes.Length - rowSize - 1) do
        printfn $"{BitConverter.ToString(bytes, iter, rowSize)}-"
        iter <- i

    printfn $"{BitConverter.ToString(bytes, iter + rowSize)}\n"

let byteArray =
    [| 0uy; 0uy; 0uy; 0uy; 0uy; 0uy; 0uy; 0uy; 240uy; 63uy
       0uy; 0uy; 0uy; 0uy; 0uy; 224uy; 111uy; 64uy; 0uy; 0uy;
       224uy; 255uy; 255uy; 255uy; 239uy; 65uy; 0uy; 0uy; 0uy; 0uy
       0uy; 0uy; 112uy; 63uy; 0uy; 0uy; 0uy; 0uy; 0uy; 0uy
       240uy; 61uy; 223uy; 136uy; 30uy; 28uy; 254uy; 116uy; 170uy; 1uy
       250uy; 89uy; 140uy; 66uy; 202uy; 192uy; 243uy; 63uy; 251uy; 89uy
       140uy; 66uy; 202uy; 192uy; 243uy; 63uy; 252uy; 89uy; 140uy; 66uy
       202uy; 192uy; 243uy; 63uy; 82uy; 211uy; 187uy; 188uy; 232uy; 126uy
       61uy; 126uy; 255uy; 255uy; 255uy; 255uy; 255uy; 255uy; 239uy; 255uy
       255uy; 255uy; 255uy; 255uy; 255uy; 239uy; 127uy; 1uy; 0uy; 0uy
       0uy; 0uy; 0uy; 0uy; 0uy; 248uy; 255uy; 0uy; 0uy; 0uy
       0uy; 0uy; 0uy; 240uy; 255uy; 0uy; 0uy; 0uy; 0uy; 0uy
       0uy; 240uy; 127uy |]

printfn "This example of the BitConverter.ToDouble(byte [], int) \nmethod generates the following output. It converts elements \nof a byte array to double values.\n"

writeMultiLineByteArray byteArray

print "index" "array elements" "double"
print "-----" "--------------" "------"

// Convert byte array elements to double values.
BAToDouble byteArray 0
BAToDouble byteArray 2
BAToDouble byteArray 10
BAToDouble byteArray 18
BAToDouble byteArray 26
BAToDouble byteArray 34
BAToDouble byteArray 42
BAToDouble byteArray 50
BAToDouble byteArray 58
BAToDouble byteArray 66
BAToDouble byteArray 74
BAToDouble byteArray 82
BAToDouble byteArray 89
BAToDouble byteArray 97
BAToDouble byteArray 99
BAToDouble byteArray 107
BAToDouble byteArray 115


// This example of the BitConverter.ToDouble(byte [], int )
// method generates the following output. It converts elements
// of a byte array to double values.

// initial byte array
// ------------------
// 00-00-00-00-00-00-00-00-F0-3F-00-00-00-00-00-E0-6F-40-00-00-
// 00-00-00-00-00-00-00-00-F0-3F-00-00-00-00-00-E0-6F-40-00-00-
// E0-FF-FF-FF-EF-41-00-00-00-00-00-00-70-3F-00-00-00-00-00-00-
// F0-3D-DF-88-1E-1C-FE-74-AA-01-FA-59-8C-42-CA-C0-F3-3F-FB-59-
// 8C-42-CA-C0-F3-3F-FC-59-8C-42-CA-C0-F3-3F-52-D3-BB-BC-E8-7E-
// 3D-7E-FF-FF-FF-FF-FF-FF-EF-FF-FF-FF-FF-FF-FF-EF-7F-01-00-00-
// 00-F0-7F
//
// index             array elements                     double
// -----             --------------                     ------
//     0    00-00-00-00-00-00-00-00    0.0000000000000000E+000
//     2    00-00-00-00-00-00-F0-3F    1.0000000000000000E+000
//    10    00-00-00-00-00-E0-6F-40    2.5500000000000000E+002
//    18    00-00-E0-FF-FF-FF-EF-41    4.2949672950000000E+009
//    26    00-00-00-00-00-00-70-3F    3.9062500000000000E-003
//    34    00-00-00-00-00-00-F0-3D    2.3283064365386963E-010
//    42    DF-88-1E-1C-FE-74-AA-01    1.2345678901234500E-300
//    50    FA-59-8C-42-CA-C0-F3-3F    1.2345678901234565E+000
//    58    FB-59-8C-42-CA-C0-F3-3F    1.2345678901234567E+000
//    66    FC-59-8C-42-CA-C0-F3-3F    1.2345678901234569E+000
//    74    52-D3-BB-BC-E8-7E-3D-7E    1.2345678901234569E+300
//    82    FF-FF-FF-FF-FF-FF-EF-FF   -1.7976931348623157E+308
//    89    FF-FF-FF-FF-FF-FF-EF-7F    1.7976931348623157E+308
//    97    01-00-00-00-00-00-00-00    4.9406564584124654E-324
//    99    00-00-00-00-00-00-F8-FF                        NaN
//   107    00-00-00-00-00-00-F0-FF                         -∞
//   115    00-00-00-00-00-00-F0-7F                          ∞
' Example of the BitConverter.ToDouble method.
Module BytesToDoubleDemo

    Const formatter As String = "{0,5}{1,27}{2,27:E16}"
 
    ' Convert eight Byte array elements to a Double and display it.
    Sub BAToDouble( bytes( ) As Byte, index As Integer )

        Dim value As Double = BitConverter.ToDouble( bytes, index )

        Console.WriteLine( formatter, index, _
            BitConverter.ToString( bytes, index, 8 ), value )
    End Sub 

    ' Display a Byte array, using multiple lines if necessary.
    Sub WriteMultiLineByteArray( bytes( ) As Byte )
       
        Const rowSize As Integer = 20 
        Dim iter As Integer

        Console.WriteLine( "initial Byte array" )
        Console.WriteLine( "------------------" )

        For iter = 0 To bytes.Length - rowSize - 1 Step rowSize
            Console.Write( _
                BitConverter.ToString( bytes, iter, rowSize ) )
            Console.WriteLine( "-" )
        Next iter

        Console.WriteLine( BitConverter.ToString( bytes, iter ) )
        Console.WriteLine( )
    End Sub

    Sub Main( )
        Dim byteArray as Byte( ) = { _
              0,   0,   0,   0,   0,   0,   0,   0, 240,  63, _
              0,   0,   0,   0,   0, 224, 111,  64,   0,   0, _
            224, 255, 255, 255, 239,  65,   0,   0,   0,   0, _
              0,   0, 112,  63,   0,   0,   0,   0,   0,   0, _
            240,  61, 223, 136,  30,  28, 254, 116, 170,   1, _
            250,  89, 140,  66, 202, 192, 243,  63, 251,  89, _
            140,  66, 202, 192, 243,  63, 252,  89, 140,  66, _
            202, 192, 243,  63,  82, 211, 187, 188, 232, 126, _
             61, 126, 255, 255, 255, 255, 255, 255, 239, 255, _
            255, 255, 255, 255, 255, 239, 127,   1,   0,   0, _
              0,   0,   0,   0,   0, 248, 255,   0,   0,   0, _
              0,   0,   0, 240, 255,   0,   0,   0,   0,   0, _
              0, 240, 127 }

        Console.WriteLine( _
            "This example of the BitConverter.ToDouble( Byte( ), " & _
            "Integer ) " & vbCrLf & "method generates the " & _
            "following output. It converts elements " & vbCrLf & _
            "of a Byte array to Double values." & vbCrLf )

        WriteMultiLineByteArray( byteArray )

        Console.WriteLine( formatter, "index", "array elements", _
            "Double" )
        Console.WriteLine( formatter, "-----", "--------------", _
            "------" )
          
        ' Convert Byte array elements to Double values.
        BAToDouble( byteArray, 0 )
        BAToDouble( byteArray, 2 )
        BAToDouble( byteArray, 10 )
        BAToDouble( byteArray, 18 )
        BAToDouble( byteArray, 26 )
        BAToDouble( byteArray, 34 )
        BAToDouble( byteArray, 42 )
        BAToDouble( byteArray, 50 )
        BAToDouble( byteArray, 58 )
        BAToDouble( byteArray, 66 )
        BAToDouble( byteArray, 74 )
        BAToDouble( byteArray, 82 )
        BAToDouble( byteArray, 89 )
        BAToDouble( byteArray, 97 )
        BAToDouble( byteArray, 99 )
        BAToDouble( byteArray, 107 )
        BAToDouble( byteArray, 115 )
    End Sub 
End Module

' This example of the BitConverter.ToDouble( Byte( ), Integer )
' method generates the following output. It converts elements
' of a Byte array to Double values.
' 
' initial Byte array
' ------------------
' 00-00-00-00-00-00-00-00-F0-3F-00-00-00-00-00-E0-6F-40-00-00-
' E0-FF-FF-FF-EF-41-00-00-00-00-00-00-70-3F-00-00-00-00-00-00-
' F0-3D-DF-88-1E-1C-FE-74-AA-01-FA-59-8C-42-CA-C0-F3-3F-FB-59-
' 8C-42-CA-C0-F3-3F-FC-59-8C-42-CA-C0-F3-3F-52-D3-BB-BC-E8-7E-
' 3D-7E-FF-FF-FF-FF-FF-FF-EF-FF-FF-FF-FF-FF-FF-EF-7F-01-00-00-
' 00-00-00-00-00-F8-FF-00-00-00-00-00-00-F0-FF-00-00-00-00-00-
' 00-F0-7F
' 
' index             array elements                     Double
' -----             --------------                     ------
'     0    00-00-00-00-00-00-00-00    0.0000000000000000E+000
'     2    00-00-00-00-00-00-F0-3F    1.0000000000000000E+000
'    10    00-00-00-00-00-E0-6F-40    2.5500000000000000E+002
'    18    00-00-E0-FF-FF-FF-EF-41    4.2949672950000000E+009
'    26    00-00-00-00-00-00-70-3F    3.9062500000000000E-003
'    34    00-00-00-00-00-00-F0-3D    2.3283064365386963E-010
'    42    DF-88-1E-1C-FE-74-AA-01    1.2345678901234500E-300
'    50    FA-59-8C-42-CA-C0-F3-3F    1.2345678901234565E+000
'    58    FB-59-8C-42-CA-C0-F3-3F    1.2345678901234567E+000
'    66    FC-59-8C-42-CA-C0-F3-3F    1.2345678901234569E+000
'    74    52-D3-BB-BC-E8-7E-3D-7E    1.2345678901234569E+300
'    82    FF-FF-FF-FF-FF-FF-EF-FF   -1.7976931348623157E+308
'    89    FF-FF-FF-FF-FF-FF-EF-7F    1.7976931348623157E+308
'    97    01-00-00-00-00-00-00-00    4.9406564584124654E-324
'    99    00-00-00-00-00-00-F8-FF                        NaN
'   107    00-00-00-00-00-00-F0-FF                  -Infinity
'   115    00-00-00-00-00-00-F0-7F                   Infinity

Uwagi

Metoda ToDouble konwertuje bajty z indeksu startIndex na startIndex + 7 na Double wartość. Kolejność bajtów w tablicy musi odzwierciedlać endianness architektury systemu komputerowego. Aby uzyskać więcej informacji, zobacz sekcję Uwagi tematu BitConverter klasy.

Zobacz też

Dotyczy