Avatar billede lowjoe Nybegynder
16. maj 2002 - 11:31 Der er 15 kommentarer og
1 løsning

konvertering???

jeg har forskellige "int" tal som skal lægges sammen og konverteres om til en char, men måden og gøre det på i visual kan jeg fand"#&%¤%  ikke finde ud af.

please hjælp, og hurtigt!!!!
Avatar billede chries Nybegynder
16. maj 2002 - 11:35 #1
int x = 10, y = 100, z= 12;

char t = 0;

t = (char)(x + y + z);

ps hvis x+y+z giver over 127 (eller er det 128) giver det overflow. (kan ikke være i char mere)

eller skal det over i en streng ?

int x = 10, y = 100, z= 12;

char str[128];

sprintf( str, "%i", x + y + z );
Avatar billede chries Nybegynder
16. maj 2002 - 11:36 #2
char grænser er -+ 127 (eller -127, +128)
Avatar billede lowjoe Nybegynder
16. maj 2002 - 11:42 #3
det prøver jeg lige!!
Avatar billede lowjoe Nybegynder
16. maj 2002 - 11:45 #4
hvordan gøres det den anden vej??
Avatar billede chries Nybegynder
16. maj 2002 - 11:48 #5
int i = 0;
char str[128] = "123";

sscanf( str, "%i", &i );

i == 123
Avatar billede lowjoe Nybegynder
16. maj 2002 - 11:49 #6
jeg var vist lidt for hurtig til at mit problem, for det er faktisk sådan at de 4 int som jeg skal have lagt sammen skal lægges i en bestemt række følge int i en byte(char), dvs jeg har 2*3 bit og 2* 1 bit som skal lægges ind i den rigtige rækkefølge efter hinanden og så konverteres til en char?...    gir det mening?
Avatar billede chries Nybegynder
16. maj 2002 - 11:49 #7
eller var det den uden strengen du mente

char t = 10;

int i = 0;

i = t;
Avatar billede lowjoe Nybegynder
16. maj 2002 - 11:49 #8
jep uden streng
Avatar billede chries Nybegynder
16. maj 2002 - 11:54 #9
du mener:

int x = 2; // 1*3 bit; 010
int y = 3; // 1*3 bit; 011
int z = 1; // 1*1 bit; 001
int w = 0; // 1*1 bit; 000

ialt 8 bit:

unsigned char result = 0;

result = (x) | (y<<3) | (z<<6) | (w<<7);
result == binær mønster 01011010
                        wzyyyxxx
Avatar billede chries Nybegynder
16. maj 2002 - 11:55 #10
<< skifter binær til venstre
| binær "eller"
Avatar billede lowjoe Nybegynder
16. maj 2002 - 11:58 #11
det er præcis det...
Avatar billede chries Nybegynder
16. maj 2002 - 11:58 #12
x: 00000010
y: 00011000, skiftet binær 3 bit til venstre
z: 01000000, skiftet binær 6 bit til venstre
w: 00000000, skiftet binær 7 bit til venstre
r: 01011010, lagt sammen med binær eller (1|0 = 1, 1|1 = 1, 0|0 =0)
Avatar billede chries Nybegynder
16. maj 2002 - 12:01 #13
den anden vej:

int result = 123;

int x,y,z,w;

x = (result&0x7);
y = ((result>>3)&0x7);
z = ((result>>6)&0x1);
w = ((result>>7)&0x1);

x og'et binær med 7 (bin 111). derved er kun de nederste 3 bit tilbage.

y skiftet 3 til højre og og'et binær med 7 (bin 111). derved er kun de nederste 3 bit tilbage.

z skiftet 6 til højre og og'et binær med 1 (bin 1). derved er kun de nederste bit tilbage.
Avatar billede lowjoe Nybegynder
16. maj 2002 - 20:04 #14
kan du skrive lidt mere til konvertering tilbage fra char til bits chris???
Avatar billede chries Nybegynder
17. maj 2002 - 08:43 #15
result = 10101010 (bin)
        wzyyyzzz

x = binær and'et med 7 (111 bin)
10101010
00000111, (7) 1&1 = 1, 1&0 = 0
00000010 = x

y = binær skiftet  3 til højre (>>) og and'et med 7 (111 bin)
10101010

00010101 , binær skifet 3
00000111 , 1&1 = 1, 1&0 = 0
00000101 = y

z = binær skiftet  6 til højre (>>) og and'et med 1 (1 bin)
10101010

00000010 , binær skifet 6
00000001 , 1&1 = 1, 1&0 = 0
00000000 = z


osv
Avatar billede chries Nybegynder
17. maj 2002 - 08:43 #16
ups
10101010
wzyyyxxx
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