# Handbok &okteta;

Friedrich
W. H.
Kossebau

    &Friedrich.Kossebau.email;

Alex
Richardson

    &Alex.Richardson.email;

Stefan
Asserhäll

    stefan.asserhall@comhem.se

Översättare
2008, 2010
&Friedrich.Kossebau;
&FDLNotice;
2010-01-12
0.4.0

&okteta; är en enkel editor för rådata i filer. Den här sortens program kallas också hexadecimal editor eller binäreditor.

KDE
kdeutils
Okteta
visa
redigera
bitar
byte
binär
oktal
hexadecimal
hexeditor
rådata

## Inledning

&okteta; är en enkel editor för rådata i filer.

Data visas med två varianter: som det numeriska värdet av varje byte och som tecknen tilldelade till värdena. Värden och tecken kan antingen visas i två kolumner (det traditionella sättet i hexadecimala editorer) eller i rader med värdet ovanför tecknet. Redigering kan göras både för värdet och för tecknen.

Förutom de vanliga redigeringsmöjligheterna ger &okteta; också en liten verktygsuppsättning, liksom en tabell som listar avkodning till vanliga enkla datatyper, en tabell som listar alla möjliga byte med ekvivalenta tecken och värden, en informationsvy med statistik, en checksummeräknare, ett filterverktyg och ett verktyg för att extrahera strängar.

Alla ändringar av inläst data kan ångras eller göras om utan begränsning.

## Grunderna

### Starta &okteta;

Skriv ``okteta`` på kommandoraden eller välj Binäreditor i gruppen ProgramVerktyg i programstarten.

De vanliga kommandoradsväljarna i &Qt; och &kde; är tillgängliga, och kan visas genom att skriva in ``okteta` `--help``.

Kommandoradsväljare specifika för &okteta; är:

`<webbadresser>` - öppna filer angivna av webbadresserna

### Användning

Huvudfönstret i &okteta; har följande komponenter: en menyrad, en verktygsrad, en statusrad, en eller flera sidorader med verktyg, och huvudvyn med datavyerna i flikar.

När en fil öppnas eller ett nytt byte-fält skapas, listas alla byte som ingår i följd på rader med ett givet antal byte per rad. De visas med två varianter: som det numeriska värdet av varje byte och som tecknen tilldelade till värdena. Värden och tecken kan antingen visas i två kolumner eller i rader med värdet ovanför tecknet. På vänster sida visas positionerna för första byten på varje rad.

Hantering av data liknar den i de flesta texteditorer: data kan redigeras, klippas ut, kopieras, klistras in, dras och släppas, på i stort sett samma sätt som text kan i editorerna. En markör anger aktuell position. Genom att trycka på tangenten Insert byter man mellan ersätta och infoga. Ersättning är striktare än i texteditorer, eftersom det inte tillåter någon åtgärd som ändrar byte-fältets storlek.

I motsats till texteditorer visas innehållet med två varianter. Bara en av dem är aktivt när det gäller ny inmatning. Det finns två länkade markörer som visas värden och tecken, där den aktiva markören blinkar. När tecknen är aktiva, kan tecken skrivas in på känt sätt från texteditorer. Med värden aktiva, visas en minimal editor när en siffra skrivs in för att skriva in resten av värdet.

Sökdialogrutan låter användaren söka efter en specifik byte-sträng, som kan definieras som värden (hexadecimal, decimal, oktal, binär) eller text (aktuell 8-bitars kodning eller UTF-8).

Flera byte-fält kan vara öppna samtidigt, men bara ett kan vara aktivt. Använd menyn Fönster för att välja vilket byte-fält som ska vara aktivt.

## Verktyg

### Översikt

&okteta; tillhandahåller några verktyg, vissa för att analysera och hantera byte-fälten och vissa med allmännare syfte. Verktygen kan aktiveras eller inaktiveras från menyn Verktyg i menyraden. Varje verktyg har en liten vy, som antingen finns i en av sidoraderna eller flyttas fritt som ett fönster. Man kan docka, frigöra, arrangera om och dessutom lägga verktygen ovanpå varandra med musen. Gör det genom att hålla nere vänster musknapp på verktygsvyns namnlist, flytta omkring den som du vill, och släppa vänster musknapp för att göra färdigt åtgärden, eller annars avbryta den med tangenten Esc.

#### Analysatorer och hanterare

Bytetabell

  Tabellen anger alla möjliga byte-värden, både som tecken och numeriskt värde.

  Det valda värdet kan infogas på markörens position ett definierat antal gånger. Det kan åstadkommas genom att använda knappen Infoga eller genom att dubbelklicka på en rad i tabellen.

Binärfilter

  Filtret utför binära operationer på markerade byte-värden. Efter att ha valt operation (OCH, ELLER, ROTERA, ...) kan parametrarna, om några finns, anges i rutan nedanför. Filtret tillämpas när knappen Filtrera klickas.

Stängar

  Verktyget lokaliserar strängar i markerade markerade byte-värden. Efter att ha valt minimal stränglängd, letas efter strängarna vid användning av knappen Extrahera. Listan med visade strängar kan begränsas genom att skriva in en filtreringsterm.

Statistik

  Verktyget skapar statistik om markerade byte-värden. Statistiken anger förekomstfrekvensen för varje byte-värde i markeringen. Den kan beräknas genom att använda knappen Bygg.

Checksumma

  Verktyget beräknar diverse checksummor eller kondensat för markerade byte-värden. Efter att ha valt algoritm och ställt in parametrarna, om några finns, beräknas summan när knappen Beräkna används.

Avkodningstabell

  Tabellen visar värdet för en eller flera byte med början vid markören för vissa vanliga enkla datatyper som heltal eller flyttal, men också UTF-8. Att dubbelklicka på en rad i tabellen visar en editor, så at värdet kan redigeras och ändras.

Strukturer

  Verktyget gör det möjligt att undersöka och redigera byte-fält baserade på användarskapade strukturdefinitioner. Detaljerade instruktioner finns i ett eget avsnitt.

#### Allmänna verktyg

Filsystem

  Verktyget erbjuder en inbyggd filbläddrare som kan användas för att välja filer att öppna.

Dokument

  Verktyget visar alla filers om för närvarande har skapats eller lästs in. Symboler markerar filen med den för närvarande aktiva vyn, och visar också vilka filer som har osparade ändringar, eller vilka inlästa kopior som har ändrats av andra program.

Bokmärken

  Verktyget kan användas för att hantera bokmärken, som alternativ till menyn Bokmärken.

  Bokmärken är för närvarande bara tillfälliga och sparas inte om ett byte-fält eller hela programmet stängs.

Filinformation

  Verktyget visar viss information om den nuvarande filen, inklusive dess typ, platsen den är lagrad och dess storlek.

### Strukturverktyg

#### Allmänt

Strukturverktyget gör det möjligt att undersöka och redigera byte-fält baserade på användarskapade strukturdefinitioner, som kan skapas av fält, unioner, primitiva typer och uppräkningsvärden.

Det har sin egen inställningsdialogruta, som kan nås genom att använda knappen Inställningar. Det finns diverse alternativ som kan ställas in, som stilen (decimal, hexadecimal eller binär) som värden visas med. Dessutom är det möjligt att välja vilka strukturdefinitioner som laddas och vilka strukturer som visas i vyn.

Strukturer definieras i &okteta;s strukturdefinitionsfiler (baserade på &XML;, med filändelsen `.osd`). Dessutom innehåller en `.desktop`-fil metadata om strukturbeskrivningsfilen, som upphovsman, hemsida och licens.

För närvarande finns det inget stöd för att skapa, redigera eller installera strukturdefinitioner, så det måste göras manuellt, som beskrivs i nästa avsnitt.

#### Installera strukturdefinitioner

Strukturverktyget letar efter strukturdefinitioner i underkatalogen `share/apps/okteta/structures/` i användarens katalog för programdata (den kan hittas genom att köra ``kde4-config` `--localprefix``). Katalogen kanske måste skapas om inga strukturdefinitioner har installerats ännu.

I den underkatalogen finns en egen underkatalog för varje strukturdefinition, som både innehåller `.desktop`-filen och `.osd`-filen för den definitionen.

Exempelvis med programdatakatalogen `.kde` och en strukturdefinition vid namn Exempelstruktur, finns katalogen `.kde/share/apps/okteta/structures/Exempelstruktur` som innehåller filen `Exempelstruktur.desktop` och filen `Exempelstruktur.osd`.

Om du har installerat en ny strukturdefinition genom att skapa en sådan underkatalog med de två filerna och redigerat dem, måste du starta om &okteta; och öppna strukturverktygets inställningsdialogruta. Välj därefter fliken Strukturhantering och försäkra dig om att relevant strukturdefinition är markerad. Använd därefter knappen Verkställ ändringar, byt till fliken Strukturer och försäkra dig om att önskat element listas på höger sida.

#### Dela strukturdefinitioner

För vanliga strukturer kanske du inte behöver skapa en egen definition, utan istället kan återanvända en redan befintlig definition från ställen som kde-files.org.

Du kanske också vill dela med dig av en egen definition. För att göra det, skapa ett filarkiv (t.ex. ett komprimerat tar-arkiv, `.tgz`) som bara innehåller underkatalogen med `.osd`-filen och `.desktop`-filen. Med exemplet i föregående sektion skulle det vara underkatalogen `Exempelstruktur`. Om du håller dig till detta format kommer framtida versioner av strukturverktyget att tillhandahålla automatiskt nerladdning och installation av dessa definitioner.

#### Skapa egna strukturdefinitioner

##### En första strukturdefinition

Till att börja med skapar vi en definition för en mycket enkel teststruktur som bara innehåller primitiva datatyper (ett tecken och ett 32-bitars heltal). De skulle uttryckas i C/C++ som:

              struct simple {
                char aChar;
                int anInt;
              };

Det första steget är att skriva `.osd`-filen, som vi kallar `enkelstrukt.osd`:

              <?xml version="1.0" encoding="UTF-8"?>
              <data>
                <struct name="simple">
                  <primitive name="aChar" type="Char"/>
                  <primitive name="anInt" type="Int32"/>
                </struct>
              </data>

som är ganska lik definitionen i C/C++. Typegenskapen kan vara vilken som helst av de följande:

- Char
- Int8
- UInt8
- Int16
- UInt16
- Int32
- UInt32
- Int64
- UInt64
- Float
- Double
- Bool8
- Bool16
- Bool32
- Bool64

Nästa steg är att skriva `.desktop`-filen med metadata, som bara är en mängd par av nyckel-värde. Den ska namnges `enkelstrukt.desktop`. I det här exemplet ser den ut på följande vis:

              [Desktop Entry]
              Encoding=UTF-8
              Icon=arrow-up
              Type=Service
              ServiceTypes=KPluginInfo

              Name=Simple test structure
              Comment=A very simple test structure containing only two items

              X-KDE-PluginInfo-Author=Alex Richardson
              X-KDE-PluginInfo-Email=alex.richardson@gmx.de
              X-KDE-PluginInfo-Name=simplestruct
              X-KDE-PluginInfo-Version=1.0
              X-KDE-PluginInfo-Website=http://www.plugin.org/
              X-KDE-PluginInfo-Category=structure
              X-KDE-PluginInfo-License=LGPL
              X-KDE-PluginInfo-EnabledByDefault=false

Fälten bör alla vara ganska självförklarliga, utom `X-KDE-PluginInfo-Name`. Det måste innehålla namnet på `.osd`-filen som sitt värde (utan suffixet `.osd`).

Skapa nu underkatalogen `enkelstrukt` som beskrivs ovan, kopiera de två filerna till katalogen, och starta om &okteta;.

##### Mer komplexa strukturer

Härnäst skapar vi en definition av en mer komplex struktur, som vi kallar "komplex" och sparar i en fil som heter `komplex.osd`. Strukturen innehåller två fält (ett med fast längd och ett där längden bestäms vid körningstillfället) samt en nästlad struktur och en union.

              <?xml version="1.0" encoding="UTF-8"?>
              <data>
                <struct name="complex">
                  <primitive name="size" type="UInt8" />
                  <union name="aUnion">
                    <array name="fourBytes" length="4">
                      <primitive type="Int8" />
                    </array>
                  </union>
                  <struct name="nested">
                    <array name="string" length="size"> <!-- references the field size above -->
                    <primitive type="Char" />
                  </array>
                </struct>
              </struct>
            </data>

Det skulle motsvara följande i pseudo-C/C++

    struct complex {
        uint8_t size;
        union aUnion {
          int8_t fourBytes[4];
        };
        struct nested {
          char string[size] // inte giltig C++, referensvärde för storleken uint8
        };
    };

Uppenbarligen kan du bara låta fält med dynamisk längd referera till fält innan fältet.

Därefter skapar vi filen `komplex.desktop`precis som i det tidigare exemplet (försäkra dig om att du anger `X-KDE-PluginInfo-Name` riktigt) och gör också samma sak för att installera båda filerna.

##### Ytterligare information

Några exempel på strukturdefinitioner finns här. Det omfattar till exempel filhuvudet för PNG-filer. Ett &XML;-schema som beskriver strukturen hos `.osd`-filen finns här. Om mer information behövs kontakta mig gärna via &Alex.Richardson.email;.

## Menyalternativ

Observera att de flesta menykommandon också har en snabbtangent.

### Menyn Arkiv

&Ctrl;N Arkiv Ny

  Skapa ett nytt byte-fält...

  - Tomt: ... som tomma.

  - Från klippbordet: ... enligt klippbordets nuvarande innehåll.

  - Mönster: ... med ett givet mönster.

  - Slumpmässig data: ... med slumpmässig data.

  - Följd: ... med alla byte-värden från 0 till 255.

&Ctrl;O Arkiv Öppna...

  Öppna en befintlig fil.

Arkiv Öppna senaste

  Välj från en lista på de senast öppnade filerna.

&Ctrl;S Arkiv Spara

  Spara byte-fältet i den tilldelade filen.

Arkiv Spara som...

  Spara byte-fältet i en annan fil med ett nytt namn.

Arkiv Exportera

  Exportera markerade byte-värden till en fil...

  - Värden: ... kodade som byte-värden.

  - Vanlig text: ... kodade som tecken.

  - Base64: ... kodad med Base64-format.

  - C-fält: ... definerade som ett fält i programspråket C.

  - Visa som vanlig text: ... som i datavyn med position, byte-värden och tecken.

F5 Arkiv Uppdatera

  Ångrar alla ändringar och återställ redigerat byte-fält från filen.

&Ctrl;P Arkiv Skriv ut...

  Skriver ut aktuellt byte-fält.

Arkiv Rättigheter

  Ställer in ändringsrättigheter:

  Aktivera skrivskydd

    Om vald, kan inte några ändringar göras av det inlästa byte-fältet.

&Ctrl;W Arkiv Stäng

  Stäng det aktuella byte-fältet.

Arkiv Stäng alla

  Stäng alla byte-fält.

Arkiv Stäng alla andra

  Stäng alla utom det aktuella byte-fältet.

&Ctrl;Q Arkiv Avsluta

  Stänger &okteta;s fönster.

### Menyn Redigera

För närvarande i &kde; 4.4 skickar enkel kopiering och urklipp data till klippbordet med Mime-typen "application/octetstream", &klipper; klarar inte av att visa sådan data, och nästan inga andra program kan hantera det heller, eftersom det helt enkelt är rådata. Se alltså också undermenyn Kopiera som.

&Ctrl;Z Redigera Ångra

  Ångra senaste åtgärden.

&Ctrl;&Shift;Z Redigera Gör om

  Gör om den senast ångrade åtgärden.

&Ctrl;X Redigera Klipp ut

  Ta bort de markerade värdena och kopiera dem till klippbordet.

&Ctrl;C Redigera Kopiera

  Kopiera de markerade värdena till klippbordet.

&Ctrl;V Redigera Klistra in

  Infoga de utklippta eller kopierade värdena från klippbordet.

Redigera Kopiera som

  Kopiera de markerade värdena till klippbordet...

  - Värden: ... kodade som byte-värden.

  - Vanlig text: ... kodade som tecken.

  - Base64: ... kodad med Base64-format.

  - C-fält: ... definerade som ett fält i programspråket C.

  - Visa som vanlig text: ... som i datavyn med position, byte-värden och tecken.

Redigera Infoga
  Infoga mönster...

    Infoga en angiven bytesträng vid markören.

    Alternativ i dialogrutan låter dig ange antal gånger som mönstret infogas och dess format (Hexadecimal, Decimal, Oktal, Binär, Tecken eller UTF-8).

&Ctrl;A Redigera Markera alla

  Markera hela byte-fältet.

&Ctrl;&Shift;A Redigera Avmarkera

  Avmarkerar den aktuella markeringen.

&Ctrl;E Redigera Markera intervall...

  Öppnar en inbäddad dialogruta för att ange intervallet att markera.

Ins Redigera Ersättningsläge

  Byt mellan infoga och ersätt.

  Överskrivningsläge är implementerat att vara mycket strikt. Det är inte möjligt att ändra datastorleken (inget tillägg eller borttagning av data).

&Ctrl;F Redigera Sök...

  Sök efter ett angivet mönster i dokumentet. Hexadecimal, decimal, oktal, binär eller textmönster kan sökas efter.

  Alternativ i dialogrutan låter dig ange startpunkten, riktningen och området för sökningen.

F3 Redigera Sök igen

  Hitta nästa förekomst av sökmönstret.

  Om ett mönster inte är angivet, visas dialogrutan.

&Shift;F3 Redigera Sök föregående

  Hitta föregående förekomst av sökmönstret.

  Om ett mönster inte är angivet, visas dialogrutan.

CtrlR Redigera Ersätt...

  Ersätt sökmönstret med ett annat mönster.

CtrlG Redigera Gå till position...

  Flytta markören till en angiven position.

### Menyn Visa

&Ctrl;+ Visa Zooma in

  Öka teckenstorleken.

&Ctrl;- Visa Zooma ut

  Minska teckenstorleken.

Visa Visa tecken som inte kan skrivas ut

  Växla visning av tecken som inte kan skrivas ut på eller av. Om visningen är avstängd, visas ett ersättningstecken istället på motsvarande platser i teckenkolumnen.

F11 Visa Visa radposition

  Växla visning av radposition i en ruta till vänster på eller av.

Visa Visa värden eller tecken

  Välj vilka tolkningar av byte-värdena som visas. Möjligheterna är:

  - Värden

  - Tecken

  - Värden och tecken

Visa Värdekodning

  Välj kodningen av värdena från:

  - Hexadecimal

  - Decimal

  - Oktal

  - Binär

Visa Teckenkodning

  Välj kodningen av tecknen från undermenyn.

Visa Dynamisk layout

  Ställ in reglerna för layout av datavisningen. Det definierar hur många byte som visas per rad, beroende på vyns bredd. Möjliga regler är:

  - Av: Layouten är låst till aktuellt antal byte-värden per rad och ändras inte när vyns storlek ändras.

  - Radbryt bara fullständiga byte-grupper: Placerar så många byte-värden per rad som möjligt, under förutsättning att grupper av värden är fullständiga.

  - På: Samma som föregående, men tillåter också ofullständiga grupper av byte-värden.

Visa Vyläge

  Välj utläggning av vyn från:

  - Kolumner: Värden och tolkningen som tecken visas i den klassiska utläggningen där var och en anges i en separat kolumn.

  - Rader: Tolkningen av en byte som tecken visas direkt under värdetolkningen.

&Ctrl;&Shift;T Visa Dela horisontellt

  Dela vyområdet med vyn som för närvarande har fokus i två delar och lägg till en kopia av den nuvarande vyn i det nya nedre området.

&Ctrl;&Shift;L Visa Dela vertikalt

  Dela vyområdet med vyn som för närvarande har fokus i två delar och lägg till en kopia av den nuvarande vyn i det nya högra området.

&Ctrl;&Shift;L Visa Stäng vyområde

  Stänger vyområdet med vyn som för närvarande har fokus.

&Ctrl;&Shift;F11 Visa Fullskärmsläge

  Växla mellan fullskärmsläge på och av.

### Menyn Fönster

Tillhandahåller en lista med aktuella vyer. Välj aktivt fönster.

### Menyn Bokmärken

Flera bokmärken kan anges för ett enskilt byte-fält. Varje byte-fält har sin egen uppsättning bokmärken, och lämplig uppsättning visas längst ner i menyn Bokmärken. Välj ett bokmärke i menyn för att flytta markören i vyn till det.

Bokmärken är för närvarande bara tillfälliga och sparas inte om ett byte-fält eller hela programmet stängs.

&Ctrl;B Bokmärken Lägg till bokmärke

  Lägg till ett bokmärke för en plats i byte-fältet.

&Ctrl;&Shift;B Bokmärken Ta bort bokmärke

  Ta bort aktuellt bokmärke. Kommandot är bara tillgängligt om markören är på en plats med ett bokmärke.

Bokmärken Ta bort alla bokmärken

  Rensa bokmärkeslistan.

AltUp Bokmärken Gå till föregående bokmärke

  Flytta markören till föregående bokmärke.

AltNeråtpil Bokmärken Gå till nästa bokmärke

  Flytta markören till nästa bokmärke.

### Menyn Verktyg

Tillhandahåller en lista med installerade verktyg. Visa eller dölj varje verktyg. En detaljerad beskrivning av varje verktyg hittar du i avsnittet Verktyg.

### Menyn Inställningar

Inställningar Visa verktygsrad

  Växla visning av verktygsraden under menyraden.

Inställningar Visa statusrad

  Visa eller dölj statusraden.

Inställningar Anpassa genvägar...

  Ändra programmets snabbtangentåtgärder.

Inställningar Anpassa verktygsrader...

  Styr verktygsradens innehåll.

### Menyn Hjälp

&help.menu.documentation;

### Verktygsrad

Verktygsraden innehåller ikoner för följande kommandon:

(Alla beter sig på samma sätt som menykommandot.)

- Ny

- Öppna

- Spara

- Återställ

- Skriv ut

- Ångra

- Gör om

- Klipp ut

- Kopiera

- Klistra in

- Sök

- Sök igen

## Tack till och licens

&okteta;

Program copyright 2006-2010 &Friedrich.Kossebau; &Friedrich.Kossebau.email;

Dokumentation Copyright 2008, 2010 &Friedrich.Kossebau; &Friedrich.Kossebau.email;

Översättning Stefan Asserhäll stefan.asserhall@comhem.se

&underFDL; &underGPL;

## Installation

### Hur man skaffar &okteta;

&install.intro.documentation;

### Kompilering och installation

&install.compile.documentation;

&documentation.index;