Это не имеет смысла. Вы берете жестко закодированную строку «10:30», конвертируете ее в дату и время, а затем конвертируете обратно в строку. Поэтому, конечно, он всегда говорит «10.30».
Если вы хотите узнать текущее время, получите его напрямую:
d = datetime.datetime.now()
print(d.strftime("%I:%M"))
Это должно работать:
byte ConvertToByte(BitArray bits)
{
if (bits.Count != 8)
{
throw new ArgumentException("bits");
}
byte[] bytes = new byte[1];
bits.CopyTo(bytes, 0);
return bytes[0];
}
Решение бедного человека:
protected byte ConvertToByte(BitArray bits)
{
if (bits.Count != 8)
{
throw new ArgumentException("illegal number of bits");
}
byte b = 0;
if (bits.Get(7)) b++;
if (bits.Get(6)) b += 2;
if (bits.Get(5)) b += 4;
if (bits.Get(4)) b += 8;
if (bits.Get(3)) b += 16;
if (bits.Get(2)) b += 32;
if (bits.Get(1)) b += 64;
if (bits.Get(0)) b += 128;
return b;
}
Это должно добиться цели. Однако предыдущий ответ довольно вероятен более оптимальный вариант.
public byte ConvertToByte(BitArray bits)
{
if (bits.Count > 8)
throw new ArgumentException("ConvertToByte can only work with a BitArray containing a maximum of 8 values");
byte result = 0;
for (byte i = 0; i < bits.Count; i++)
{
if (bits[i])
result |= (byte)(1 << i);
}
return result;
}
В примере Вы отправили получающийся байт, будет 0x80. Другими словами, первое значение в BitArray coresponds к первому биту в возвращенном байте.