Хорошо, я работаю над программой игры в карты и храню значения карт в виде шестнадцатеричных цифр. Вот массив:
public int[] originalCards = new int[54]
{
0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, 0x1A, 0x1B, 0x1C, 0x1D,
0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, 0x28, 0x29, 0x2A, 0x2B, 0x2C, 0x2D,
0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x3A, 0x3B, 0x3C, 0x3D,
0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0x4A, 0x4B, 0x4C, 0x4D,
0x50, 0x51
};
Первая цифра относится к масти (1 = пики; 2 = клюшки; .... 5 = джокеры)
Вторая цифра - это номер карты (1 = туз, 5 = 5; 13 = K и т. Д.).
Я хотел бы сделать что-то вроде следующего:
</p>
<p>Pseudocode:</p>
<pre><code> public int ReturnCard(int num)
{
int card = currentDeck[num];
int suit = card.firsthexdigit;
int value = card.secondhexdigit;
return 0;
}
Мне не нужен новый метод для работы с целыми числами, я просто включил его для ясности.
Кто-нибудь знает, как это сделать в C #?
Редактировать: Хорошо, я использую сдвиг битов, как описано в одном из ответов. Я могу получить вторую цифру (костюм) просто отлично, но первая цифра продолжает выходить как «0». Есть идеи почему?
Редактировать: редактировать: хорошо, теперь работает нормально. Спасибо, ребята.