none
Не удается преобразовать из "byte[]" в "sbyte[] RRS feed

  • Вопрос

  • public override void Write(byte[] theBytes, int off, int len)
                {
                    // Encoding suspended?
                    if (suspendEncoding_Renamed_Field)
                    {
                        base.BaseStream.Write(SupportClass.ToByteArray(theBytes), off, len);
                        return;
                    } // end if: supsended
    
                    for (int i = 0; i < len; i++)
                    {
                        write(theBytes[off + i]);
                    } // end for: each byte written
                } // end write

    Ошибка: 

    Аргумент 1: не удается преобразовать из "byte[]" в "sbyte[]".

    Не могу понять, почему так происходит....

    Прошу Вашей помощи.

    20 декабря 2015 г. 5:38

Все ответы

  • Наверное так происходит потому что SupportClass.ToByteArray() параметр заявлен как sbyte[].

    В следующий раз так же указывайте строку где имеется ошибка и сигнатуры всех методов.


    This posting is provided "AS IS" with no warranties, and confers no rights.

    20 декабря 2015 г. 19:27
    Модератор
  • Добрый день.

    byte хранит числа от 0 до 255, sbyte от -128 до 127. Приобразование по умолчанию между этими типами не работает. Если вы уверены, что все числа в массиве у вас от 0 до 127, то перед вызовом метода можно написать что-нибудь такое:

    sbyte[] theUBytes = new sbyte[theBytes.Length];
    for (int i = 0; i < theBytes.Length; i++)
    {
        theUBytes[i] = (sbyte)theBytes[i];
    }

    21 декабря 2015 г. 10:39
    Отвечающий