Как можно упростить преобразование сетевого порядка байтов из BinaryReader?

Свойство z-index работает только с элементами с position значением, отличным от static (например, position: absolute;, position: relative; или position: fixed ]).

Существует также position: sticky;, который поддерживается в Firefox, имеет префикс в Safari, некоторое время работал в более ранних версиях Chrome под специальным флагом и рассматривается Microsoft для добавления в их браузер Edge.

7
задан Zach Lute 23 September 2008 в 21:13
поделиться

2 ответа

Нет никакого встроенного преобразователя. Вот моя обертка (как Вы видите, я только реализовал функциональность, в которой я нуждался, но структуру довольно легко изменить на Вашу симпатию):

/// <summary>
/// Utilities for reading big-endian files
/// </summary>
public class BigEndianReader
{
    public BigEndianReader(BinaryReader baseReader)
    {
        mBaseReader = baseReader;
    }

    public short ReadInt16()
    {
        return BitConverter.ToInt16(ReadBigEndianBytes(2), 0);
    }

    public ushort ReadUInt16()
    {
        return BitConverter.ToUInt16(ReadBigEndianBytes(2), 0);
    }

    public uint ReadUInt32()
    {
        return BitConverter.ToUInt32(ReadBigEndianBytes(4), 0);
    }

    public byte[] ReadBigEndianBytes(int count)
    {
        byte[] bytes = new byte[count];
        for (int i = count - 1; i >= 0; i--)
            bytes[i] = mBaseReader.ReadByte();

        return bytes;
    }

    public byte[] ReadBytes(int count)
    {
        return mBaseReader.ReadBytes(count);
    }

    public void Close()
    {
        mBaseReader.Close();
    }

    public Stream BaseStream
    {
        get { return mBaseReader.BaseStream;  }
    }

    private BinaryReader mBaseReader;
}

В основном ReadBigEndianBytes делает трудную работу, и это передается BitConverter. Будет определенная проблема при чтении большого количества байтов, так как это вызовет выделение памяти большой емкости.

5
ответ дан 7 December 2019 в 10:10
поделиться

Я создал пользовательский BinaryReader для обработки всего этого. Это доступно как часть моей библиотеки Nextem. Это также имеет очень простой способ определить двоичные структуры, которые я думаю, поможет Вам здесь - проверяют Примеры.

Примечание: Это находится только в SVN прямо сейчас, но очень стабильный. Если у Вас есть какие-либо вопросы, пошлите мне по электронной почте в cody_dot_brocious_at_gmail_dot_com.

1
ответ дан 7 December 2019 в 10:10
поделиться
Другие вопросы по тегам:

Похожие вопросы: