short Combine(byte hi, byte lo) {
return (short)((hi << 8) | lo)
}
c# high byte, low byte
У меня есть два значения, например 151 и 38, из них, 38 является старшим байтом, а 151 младшим. Какая функция в C# исползуется для получения результата?
Пример в ручную решается так:151 = { 0x97 }, 38 = { 0x26 };
0х2697(шестнадцатиричное значение) = 9879 (десятичное значение)
Если 1е,то остаток от деления на 256 и целое от того же,если 2е,то LowByte*256+HighByte(если использовать порядок Intel–младший байт по младшему адресу)
Ещё,помнится,в C++ был макрос MAKEWORD.Насчёт решёток не знаю
Upd:риальне не подумал!:)
Забыл про сдвиг.См. ниже пост hardcase'а
Цитата: WantToProg
Какая функция в C# исползуется для получения результата?
Голова.
Код:
Альтернативой может стать BitConverter.ToInt16, но для него нужно изготавливать массив, что неспортивно.
Цитата: hardcase
Голова.
Альтернативой может стать BitConverter.ToInt16, но для него нужно изготавливать массив, что неспортивно.
Код:
short Combine(byte hi, byte lo) {
return (short)((hi << 8) | lo)
}
return (short)((hi << 8) | lo)
}
Альтернативой может стать BitConverter.ToInt16, но для него нужно изготавливать массив, что неспортивно.
Благодарю, но я все таки воспользовался BitConverter.ToInt16, в моем случае показалось удобным. Надо вообще подразобраться со сдвигом, не понимаю что это такое :)