Avatar billede clinton-2 Nybegynder
30. september 2006 - 14:30 Der er 4 kommentarer og
1 løsning

Data konvertering bin char array to string

Har et char array(list) bestående at 8 tal som jeg gerne vil have ganget/lagt sammen så det kommer til at et 8 byte stort tal. Problemet er at det tal jeg får ud ikke er i den rigtige størrelse, kun 6 ciffer mod de 18 ciffer jeg burde få.


List indeholder
224;
4;
1;
0;
1;
211;
250;
254;
---------------------------------
__int64 id = 0;
for(i=0; i<8; i++){
  id += list[i]*(1+255*i);
}
printf("%d", id);
---------------------------------
Skriver følgende ud 453644
Avatar billede bertelbrander Novice
30. september 2006 - 17:02 #1
Dette virker:

#include <iostream>

int main(void)
{
  unsigned char list[8] = {224, 4, 1, 0, 1, 211, 250, 254};
  __int64 id = 0;
  int i;
  for(i=0; i<8; i++)
  {
      id += 1LL*list[i] << (i*8);
  }
  std::cout <<  id << std::endl;
}

Det burde også virke med:
  printf("%lld\n", id);

Men nogle versioner af GCC har et problem med at udskrive 64 bits. Bemærk at det er lld.
Avatar billede arne_v Ekspert
30. september 2006 - 17:04 #2
prøv:

__int64 id = 0;
for(i=0; i<8; i++){
  id = (id << 8) + list[i];
}
Avatar billede clinton-2 Nybegynder
30. september 2006 - 17:04 #3
Sikke noget vrøvle kode jeg har fået skrevet. Bare glem det;)
Avatar billede clinton-2 Nybegynder
30. september 2006 - 17:22 #4
Eller i har sgu fortjent point, så smid et svar
Avatar billede bertelbrander Novice
30. september 2006 - 20:18 #5
Jeg samler ikke på point.
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