C sharp - Leer los estados de un Byte en bit

 
Vista:
sin imagen de perfil
Val: 168
Bronce
Ha mantenido su posición en C sharp (en relación al último mes)
Gráfica de C sharp

Leer los estados de un Byte en bit

Publicado por Meta (122 intervenciones) el 10/01/2022 23:02:24
uenas 2022:

Me llega un Byte, por ejemplo la legra A.

Tiene 8 bit.

Si en la consola C# me dice que escriba una letra, escribo la A. Quiero que me aparezca los estados de los bit de esa letra A.

Me lo muestre en pantalla así.

bit
---+---+---------------
128 - 1 - Este es el bit de mayor peso.
64 - 0 -
32 - 0 -
16 - 1 -
8 - 1 -
4 - 1 -
2 - 0 -
1 - 1 - Este es el bit de menor peso.

¿Cómo se hace?
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil
Val: 326
Plata
Ha mantenido su posición en C sharp (en relación al último mes)
Gráfica de C sharp

Leer los estados de un Byte en bit

Publicado por Miguel (143 intervenciones) el 11/01/2022 01:43:20
Primero necesitas un codigo que representa cada letra, despues solo comparas para saber que letra te envian}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil
Val: 168
Bronce
Ha mantenido su posición en C sharp (en relación al último mes)
Gráfica de C sharp

Leer los estados de un Byte en bit

Publicado por Meta (122 intervenciones) el 11/01/2022 06:37:58
Gracias.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
using System;
using System.Collections.Generic;
 
namespace Byte_a_bit_Consola_01
{
    internal class Program
    {
        static void Main(string[] args)
        {
            #region Configuración ventana.
            // Título de la ventana.
            Console.Title = "Leer de un Byte a bits";
 
            // Tamaño de la ventana, x, y.
            const int ancho = 80;
            const int alto = 25;
            Console.SetWindowSize(ancho, alto);
 
            // Color de fondo.
            Console.BackgroundColor = ConsoleColor.Black;
 
            // Color de las letras.
            Console.ForegroundColor = ConsoleColor.Yellow;
 
            // Limpiar pantalla y dejarlo todo en color de fondo.
            Console.Clear();
 
            // Visible el cursor.
            Console.CursorVisible = false;
            #endregion
 
            ConsoleKeyInfo key;
            KeyValuePair<string, int> kvp;
            while (true)
            {
                key = Console.ReadKey(true);
                if (key.Key == ConsoleKey.Escape)
                    break; // sale del while y termina el programa
                if (key.Modifiers == (ConsoleModifiers.Alt | ConsoleModifiers.Control | ConsoleModifiers.Shift))
                    continue; // ignora teclas con teclas especiales (Alt, Ctrl, Shift)
                if ((kvp = GetBits((byte)key.KeyChar)).Value == 0)
                    continue; // ignora teclas de función (F6, F9, Supr, Insert, Inicio, Fin, RePág, AvPág)
                if (Char.IsControl(key.KeyChar) || key.Key == ConsoleKey.Spacebar)
                    Console.WriteLine(key.Key + " - " + kvp.Key + " (" + kvp.Value + ")"); // si es un caracter no imprimible, pone su nombre
                else
                    Console.WriteLine(key.KeyChar + " - " + kvp.Key + " (" + kvp.Value + ")"); // si no, lo muestra, en ambos casos con sus bits
            }
        }
 
        // GetBits() recibe un byte y retorna un KeyValuePair<> con sus bits como string y su valor decimal como int
        static KeyValuePair<string, int> GetBits(byte car)
        {
            string result = "";
            int val10 = 0, val;
            for (int pos = 7; pos >= 0; pos--)
            {
                result += ((val = (car & (1 << pos))) != 0 ? "1" : "0");
                val10 += val;
            }
            return new KeyValuePair<string, int>(result, val10);
        }
    }
}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar