Avatar billede funtex Nybegynder
17. april 2002 - 22:45 Der er 13 kommentarer og
1 løsning

Byte til Bits konvertering?

Jeg vil gerne konverter en byte (integer) til 8 bit værdier
nogen forslag?
Avatar billede minau Nybegynder
17. april 2002 - 22:47 #1
hmm - det kan jo være at jeg blot ikke forstår dit spørgsmål - men er en byte ikke blot 8 bit der er sammensat?
Avatar billede funtex Nybegynder
17. april 2002 - 22:50 #2
jo lige præcis men jeg vil gerne have "skilt byten ad" så jeg kan se hver bit værdi
Avatar billede .cpp. Nybegynder
18. april 2002 - 01:16 #3
char buf[9];

_itoa (A, buf, 2);
cout << "A: " << buf;
_itoa (B, buf, 2);
cout << "B: " << buf;
_itoa (C, buf, 2);
cout << "C: " << buf;


-----------Display----------------
A: 10000001
B: 10000010
C: 10000011
Avatar billede .cpp. Nybegynder
18. april 2002 - 02:23 #4
du kan også bruger | operatoren til at tjekke et bestem bit i en byte
Avatar billede funtex Nybegynder
18. april 2002 - 08:36 #5
Det jeg er interesseret i er en funktion der kan opdele en integer mellem 0-255 (en byte) i bits.
Avatar billede .cpp. Nybegynder
18. april 2002 - 15:07 #6
Det gør _itoa ();
Avatar billede kamikaze Nybegynder
18. april 2002 - 22:50 #7
.cpp. har ret, du kan bruge itoa().

Du kan fx. lave en funktion på denne måde:
Avatar billede kamikaze Nybegynder
18. april 2002 - 22:50 #8
#include "iostream.h"
#include "conio.h"
#include "stdlib.h"
#include "string.h"



void GetByteAsBits(unsigned char byte, char* line)
{
    char tmp[10];
    itoa ((int)byte, tmp, 2);
    memset(line, '0', 8);
    memcpy(&line[8 - strlen(tmp)], tmp, strlen(tmp));
    line[8] = 0;
}

void main()
{
    char line[9];

    for (int i=0; i<256;++i)
    {
        GetByteAsBits(i, line);
        cout << line << endl;
    }

    getch();
}
Avatar billede kamikaze Nybegynder
18. april 2002 - 22:55 #9
Du kan så læse hver enkelt bit som char:

void main()
{
    char line[9];
    GetByteAsBits(127, line);
    for (int i=0; i<8;++i)
    {
        cout << line[i] << endl;
    }

    getch();
}
Avatar billede kamikaze Nybegynder
18. april 2002 - 22:57 #10
Husk det er som char du får bits tilbage, dvs. som ascii værdier og IKKE integers :-)
Avatar billede jesper2009 Nybegynder
19. april 2002 - 08:01 #11
Jeg er ikke helt med på hvad 'en byte (integer)' præcis betyder men prøv at kigge på denne lille algoritme som udskriver en byte:

void printbits(unsigned char s){
  int sh;
  for (sh = 7; sh >= 0; sh--){
    printf("%d", (s >> sh) & 1);
  }
  printf("\n");
}

:) mvh Jesper
Avatar billede funtex Nybegynder
19. april 2002 - 09:08 #12
kamikaze -> det var lige hvad jeg skulle bruge!
Jesper -> tak for forslaget, jeg har ikke kigget på det da kamikazes løsning virker!
Avatar billede kamikaze Nybegynder
19. april 2002 - 10:35 #13
jesper2009 >> En byte som integer findes selvfølgelig ikke. En integer er 4 bytes lang (under win32). Men hvis en int har en værdi mellem 0-255 kan den castes til en char som er 1 byte lang.
Avatar billede kamikaze Nybegynder
19. april 2002 - 10:36 #14
funtex >> takker for points :-)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester