10. februar 2009 - 16:07Der er
29 kommentarer og 1 løsning
Toggle bestemt bit i string?
Hej eksperter,
Først skal det lige siges, at jeg ikke er voldsomt god til C++.
Jeg skal have toggled en bit i en string - hvordan gør jeg det? Eksempel: "AB" (0100 0001, 0100 0010 ASCII) bliver til 0100 0011, 0100 0000 ved toggle af bit 6.
Hvordan kan jeg så manipulere en enkelt bit uden alt for meget fiksfakseri? Er der ikke en let metode til det? Det kan godt ske, jeg skal have læse lidt om bithåndtering i C/C++... Kender du en god artikel/tutorial?
Hehe, jo, jeg skriver også C#... Og jeg er en del bedre til det end C/C++. Jeg prøver lige med C#-koden, for det ser ud til, at det er mindst lige så enkelt og effektivt(?) som C/C++.
Synes godt om
Slettet bruger
11. februar 2009 - 21:25#14
Der er forresten noget, der slår mig: Hvad nu hvis strengen er længere end maksimalværdien for int? Så kan den vel ikke opstilles som et char array?
Du faar problem hvis dit C char array / C# byte array skal have mere end 2 milliarder elementer.
(C# saadan er det, C ved de mest gaengse implementationer)
Allerede ved 200 millioner skal ix aendres til en 64 bit integer.
Synes godt om
Slettet bruger
11. februar 2009 - 21:41#17
Mhm. Faktisk er jeg lidt en klovn, har jeg lige fundet ud af. Koden skulle være kernen i en virtuel makulator, der toggler bits med tilfældige intervaller (0-2 for perfekt destruktion), men når jeg alligevel håndterer hele strengen på én gang, skal jeg jo også skrive hele den resulterende streng (eller byte array) til filen - hvorfor jeg lige så godt kan unsette samtlige bits :) Lidt af en bommert. Anyway, jeg tester det alligevel og ser, om jeg kan få det til at du.
Det vil da give god mening at overskrive filen med random data (husk ikke at slette den gamle fil og skrive en ny fil !).
Men du kan jo sagtens goere det byte vis fremfor bit vis.
Synes godt om
Slettet bruger
11. februar 2009 - 21:56#19
Okaj, jeg tror ikke helt, jeg fik forklaret problemet godt nok :) Konceptet går ud på ikke at overskrive hver eneste byte, da dette for store filer vil tage meget lang tid. I stedet toggles enkelte bits med f.eks. 0 til 14 (gennemsnit 7) bits interval, hvor med der opnås 0 til 8 og statistisk set 1 "fejl" i hvert bit af hele filen, hvilket gør genskabelsesarbejdet voldsomt stort i forhold til den lette makulering. Pointen er så, at der selvfølgelig kun skal skrives til filen, hvor en bit er ændret - ellers kan jeg jo lige så godt droppe algoritmen og skrive rene 0'er, for så er der jo intet sparet på hverken CPU, RAM eller HD - tværtimod!
Synes godt om
Slettet bruger
11. februar 2009 - 21:59#20
hvor med der opnås 0 til 8 og statistisk set 1 "fejl" i hvert bit af hele filen
skulle være
hvormed der opnås 0 til 8 og statistisk set 1 "fejl" i hvert byte af hele filen
Det tjener ikke noget formaal. File laeses og skrives i store klumper. KB ! Om du aendrer 1 bit eller samtlige bit i de KB boer ikke paavirke performance naevnevaerdigt.
#21 Se, det er problemet med at være kreativ frem for vidende :) Tak.
#22 Jeps, jeg har sprunget over mange aspekter af programmering, da jeg alligevel starter mit datalogistudie til sommer og således formodentligt når igennem det hele over de næste år. Der er jo ikke så meget ved at læse datalogi, hvis man kan halvdelen af programmeringen i forvejen :) Og nej, jeg har ikke læst artiklen - men det gør jeg nu.
PS: Du kan vist lige så godt smide et svar nu.
Synes godt om
Slettet bruger
12. februar 2009 - 00:33#24
Uha, artiklen trænger godt nok til lidt formatteringsmæssige rettelser - men ellers spændende læsestof. Måske skulle jeg sætte mig bedre ind i bitoperationer, men det bliver ikke i nat... Z'erne er nemlig ved at indhente mig.
#26 I know. Jeg vil også foretrække at lære de grundlæggende principper på en uddannelse og selv sætte mig ind i diverse sprog bagefter - hvilket er årsagen til mit fravalg af datamatikeruddannelsen og diverse andre muligheder som alternativer. Så vidt jeg husker, er du selv datalog eller IT-ingeniør...?
Nej - jer er faktisk uddannet økonom (cand.oecon.) for mange mange år siden.
Synes godt om
Slettet bruger
12. februar 2009 - 00:51#30
Nå! Nej, det er sgu ikke ligefrem inden for det datalogiske spektrum :) Jeg må sgu have rodet mine guruer sammen... Anyway, jeg smutter i seng så godnat herfra.
Synes godt om
Ny brugerNybegynder
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.