powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Переменную из массива
8 сообщений из 8, страница 1 из 1
Переменную из массива
    #38975983
AndrF
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Собственно, довольно примитивный вопрос - есть байтовый массив в котором содержатся старший и младший байт, которые нужно присвоить переменной типа Short.

Ну, например, в языках для микроконтроллеров это пишется примерно так:

s.byte0 = m(0)
s.byte1 = m(1)

А как это лучше сделать в NET? Сейчас делаю программу для VB.NET...
...
Рейтинг: 0 / 0
Переменную из массива
    #38975991
Фотография ЕвгенийВ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Переменную из массива
    #38976022
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Независимо от языка
Код: c#
1.
s =  m(0) + m(1) * 256


*256 можно заменить битовым сдвигом на 8 бит.
Код: c#
1.
s =  m(0) + (m(1) << 8)
...
Рейтинг: 0 / 0
Переменную из массива
    #38976198
AndrF
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
> Независимо от языка

А вы попробуйте выполнить. Для m(0) = 255 и m(1)=255, к примеру.
...
Рейтинг: 0 / 0
Переменную из массива
    #38976202
AndrF
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>BitConverter

Это обратная операция тому что нужно...
...
Рейтинг: 0 / 0
Переменную из массива
    #38976211
Фотография ЕвгенийВ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AndrF>BitConverter

Это обратная операция тому что нужно...
Батенька, это вообще то класс.
...
Рейтинг: 0 / 0
Переменную из массива
    #38976224
AndrF
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>Батенька, это вообще то класс.

Спасибо, разобрался:

Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
        Dim m(1) As Byte, s As Short

        m(0) = 255
        m(1) = 255

        s = BitConverter.ToInt16(m, 0)

        Debug.Print(s)
...
Рейтинг: 0 / 0
Переменную из массива
    #38976247
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AndrF> Независимо от языка

А вы попробуйте выполнить. Для m(0) = 255 и m(1)=255, к примеру.
Если Short это двухбайтовое знаковое целое, то будет переполнение, в результате скорее всего будет -1
для беззнакового все работает
Код: c#
1.
2.
3.
            Byte[] m = new Byte[] { 255, 255 };
            UInt16 s = (UInt16)(m[0] + m[1] * 256);
            Console.WriteLine(s); // 65535


Так тоже работает
Код: c#
1.
UInt16 s = (UInt16)(m[0] + (m[1] << 8));
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Переменную из массива
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]