я пытаюсь расшифровать BitmaskДекодирование битовой маски из значения в C#
[Flags]
public enum Amenities
{
BusinessCenter = 1,
FitnessCenter = 2,
HotTub = 4,
InternetAccess = 8,
KidsActivities = 16,
Kitchen = 32,
PetsAllowed = 64,
Pool = 128,
Restaurant = 256,
Spa = 512,
Whirlpool = 1024,
Breakfast = 2048,
Babysitting = 4096,
Jacuzzi = 8192,
Parking = 16384,
RoomService = 32768,
AccessibleTravel = 65536,
AccessibleBathroom = 131072,
RollShower = 262144,
HandicappedParking = 524288,
InRoomAccessibility = 1048576,
AccessibilityDeaf = 2097152,
BrailleSignage = 4194304,
FreeAirportShuttle = 8388608,
IndoorPool = 16777216,
OutdoorPool = 33554432,
ExtendedParking = 67108864,
FreeParking = 134217728
}
Как я пишу функцию, которая декодирует значение, как 5722635 и возвращает список всех удобств, которые кодируются в 5722635.
результат должен выглядеть следующим образом:
Это свойство имеет следующие характеристики:
- Бизнес-центр
- Фитнес-центр
- Доступ в Интернет
- Доступен Spa на месте
- Няня
- Парковка
- Проезд для людей
- Доступная ванная комната
- Передвижной душ
- In-room Специальные возможности
- Брайля или рельефные указатели
Я пытался что-то вроде
public List<Amenities> Decode(long mask)
{
var list = new List<Amenities>();
for (var index = 0; index < 16; index++)
{
var bit = 1 << index;
if (0 != (bit & mask))
{
list.Add(new Amenities(index));
}
}
return list;
}
Но не могу заставить его работать. Любые предложения относительно того, как сделать эту работу должным образом, будут оценены.
16 ISN» t достаточно и что 'новый' синтаксис для броска, вероятно, не работает – harold
новый синтаксис определенно не работает. Вы не можете создать «новый» экземпляр элемента перечисления, подобный этому –