<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Pages on ebyte.org</title>
    <link>https://ebyte.org/pages/</link>
    <description>Recent content in Pages on ebyte.org</description>
    <generator>Hugo</generator>
    <language>en-us</language>
    <atom:link href="https://ebyte.org/pages/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>About</title>
      <link>https://ebyte.org/about/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://ebyte.org/about/</guid>
      <description>&lt;p&gt;ebyte.org is the home of EByte, a small engine for binary file formats. You describe a format once, in a JSON schema: which fields come first, how wide each one is, which byte order, how many records follow. EByte then uses that one description three ways. It reads a file into JSON you can edit, it writes edited JSON back into a binary file, and it traces a file field by field, so when something doesn&amp;rsquo;t match you get the field, the byte offset and what was expected.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Command Reference</title>
      <link>https://ebyte.org/command-reference/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://ebyte.org/command-reference/</guid>
      <description>&lt;p&gt;&lt;code&gt;ebyte&lt;/code&gt; has four commands. They all use the same interpreter as the Go library, and they never guess a format: every command needs a schema. The full reference is &lt;a href=&#34;https://github.com/softdevstudio/ebyte/blob/main/docs/cli.md&#34;&gt;cli.md on GitHub&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;ebyte validate-schema --schema format.json&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;ebyte decode  --schema format.json --input file.bin  --output file.json&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;ebyte encode  --schema format.json --input file.json --output new.bin&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;ebyte inspect --schema format.json --input file.bin  --format text&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;commands&#34;&gt;Commands&lt;/h2&gt;&#xA;&lt;p&gt;&lt;strong&gt;&lt;code&gt;validate-schema&lt;/code&gt;&lt;/strong&gt; checks a schema and prints its name and SHA-256 identity as JSON. It doesn&amp;rsquo;t read any binary input.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Contact</title>
      <link>https://ebyte.org/contact/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://ebyte.org/contact/</guid>
      <description>&lt;p&gt;ebyte.org would like to hear from:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;strong&gt;Anyone trying EByte out.&lt;/strong&gt; Which format you pointed it at, what worked, and what got in the way.&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Anyone who found a bug.&lt;/strong&gt; A file that didn&amp;rsquo;t come back byte for byte, an offset that looked wrong, an error you didn&amp;rsquo;t expect.&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Anyone with a format EByte can&amp;rsquo;t describe yet.&lt;/strong&gt; Bit fields, floats, offsets, checksums: knowing which ones people need decides what comes next.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;Write to &lt;strong&gt;&lt;a href=&#34;mailto:info@ebyte.org&#34;&gt;info@ebyte.org&lt;/a&gt;&lt;/strong&gt;.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Download EByte</title>
      <link>https://ebyte.org/download/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://ebyte.org/download/</guid>
      <description>&lt;p&gt;The &lt;code&gt;ebyte&lt;/code&gt; command is one file with nothing else to install. Each archive below holds it along with a short quick start, the example format, the manual and the license files. The links always point to the latest release.&lt;/p&gt;&#xA;&lt;div style=&#34;overflow-x:auto&#34;&gt;&#xA;&lt;table&gt;&#xA;  &lt;thead&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;th&gt;System&lt;/th&gt;&#xA;          &lt;th&gt;Download&lt;/th&gt;&#xA;          &lt;th&gt;Checked before release&lt;/th&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/thead&gt;&#xA;  &lt;tbody&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;Linux, x86-64&lt;/td&gt;&#xA;          &lt;td&gt;&lt;a href=&#34;https://github.com/softdevstudio/ebyte/releases/latest/download/ebyte-linux-amd64.tar.gz&#34;&gt;ebyte-linux-amd64.tar.gz&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td&gt;Run on Linux&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;Linux, ARM64&lt;/td&gt;&#xA;          &lt;td&gt;&lt;a href=&#34;https://github.com/softdevstudio/ebyte/releases/latest/download/ebyte-linux-arm64.tar.gz&#34;&gt;ebyte-linux-arm64.tar.gz&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td&gt;Cross-built&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;macOS, Apple silicon&lt;/td&gt;&#xA;          &lt;td&gt;&lt;a href=&#34;https://github.com/softdevstudio/ebyte/releases/latest/download/ebyte-darwin-arm64.tar.gz&#34;&gt;ebyte-darwin-arm64.tar.gz&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td&gt;Run on macOS&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;macOS, Intel&lt;/td&gt;&#xA;          &lt;td&gt;&lt;a href=&#34;https://github.com/softdevstudio/ebyte/releases/latest/download/ebyte-darwin-amd64.tar.gz&#34;&gt;ebyte-darwin-amd64.tar.gz&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td&gt;Cross-built&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;Windows, x86-64&lt;/td&gt;&#xA;          &lt;td&gt;&lt;a href=&#34;https://github.com/softdevstudio/ebyte/releases/latest/download/ebyte-windows-amd64.zip&#34;&gt;ebyte-windows-amd64.zip&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td&gt;Run on Windows&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;/div&gt;&#xA;&lt;p&gt;&lt;em&gt;Checksums are in &lt;a href=&#34;https://github.com/softdevstudio/ebyte/releases/latest/download/SHA256SUMS&#34;&gt;SHA256SUMS&lt;/a&gt;. &lt;a href=&#34;https://github.com/softdevstudio/ebyte/releases/latest/download/RELEASE-MANIFEST.json&#34;&gt;RELEASE-MANIFEST.json&lt;/a&gt; records the source commit, the Go version that built each binary and how each archive was checked. Every release is listed on &lt;a href=&#34;https://github.com/softdevstudio/ebyte/releases&#34;&gt;GitHub&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Quick Start</title>
      <link>https://ebyte.org/quick-start/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://ebyte.org/quick-start/</guid>
      <description>&lt;p&gt;EByte reads a binary file through a schema you write, turns it into JSON you can edit, and writes it back. This page goes from download to your first round trip in a few minutes, using the example that ships in every archive.&lt;/p&gt;&#xA;&lt;h2 id=&#34;1-get-the-tool&#34;&gt;1. Get the Tool&lt;/h2&gt;&#xA;&lt;p&gt;Download the archive for your system from the &lt;a href=&#34;https://ebyte.org/download/&#34;&gt;download page&lt;/a&gt; and unpack it. On Linux or macOS:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;tar -xzf ebyte-linux-amd64.tar.gz&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;cd ebyte&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;./ebyte --version&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;That prints the version, such as &lt;code&gt;ebyte 0.2.0&lt;/code&gt;. The folder also holds &lt;code&gt;examples/&lt;/code&gt;, the manual and the license files.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Schema Library</title>
      <link>https://ebyte.org/schema-library/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://ebyte.org/schema-library/</guid>
      <description>&lt;p&gt;Ready-made EByte schemas for real formats. Each one comes with a real sample file, and on every change to EByte the tests decode that sample and encode it back, checking every byte. Download a schema, point &lt;code&gt;ebyte&lt;/code&gt; at your own file, and you&amp;rsquo;ll know within a line whether it matches.&lt;/p&gt;&#xA;&lt;div style=&#34;overflow-x:auto&#34;&gt;&#xA;&lt;table&gt;&#xA;  &lt;thead&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;th&gt;Format&lt;/th&gt;&#xA;          &lt;th&gt;Schema&lt;/th&gt;&#xA;          &lt;th&gt;Sample&lt;/th&gt;&#xA;          &lt;th&gt;Walkthrough&lt;/th&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/thead&gt;&#xA;  &lt;tbody&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;Plain PCM WAV&lt;/td&gt;&#xA;          &lt;td&gt;&lt;a href=&#34;https://github.com/softdevstudio/ebyte/blob/main/schemas/pcm-wav.schema.json&#34;&gt;pcm-wav.schema.json&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td&gt;&lt;a href=&#34;https://github.com/softdevstudio/ebyte/blob/main/schemas/samples/tone.wav&#34;&gt;tone.wav&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td&gt;&lt;a href=&#34;https://ebyte.org/ebyte-case-study-reading-and-editing-a-real-wav-file/&#34;&gt;WAV case study&lt;/a&gt;&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;24-bit BMP&lt;/td&gt;&#xA;          &lt;td&gt;&lt;a href=&#34;https://github.com/softdevstudio/ebyte/blob/main/schemas/bmp-24bit.schema.json&#34;&gt;bmp-24bit.schema.json&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td&gt;&lt;a href=&#34;https://github.com/softdevstudio/ebyte/blob/main/schemas/samples/stripes.bmp&#34;&gt;stripes.bmp&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td&gt;&lt;a href=&#34;https://ebyte.org/ebyte-case-study-flipping-and-editing-a-real-bmp-image/&#34;&gt;BMP case study&lt;/a&gt;&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;WAV, any chunks&lt;/td&gt;&#xA;          &lt;td&gt;&lt;a href=&#34;https://github.com/softdevstudio/ebyte/blob/main/schemas/riff-wave.schema.json&#34;&gt;riff-wave.schema.json&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td&gt;&lt;a href=&#34;https://github.com/softdevstudio/ebyte/blob/main/schemas/samples/tagged.wav&#34;&gt;tagged.wav&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td&gt;&lt;a href=&#34;https://ebyte.org/ebyte-case-study-reading-every-chunk-of-a-wav-file/&#34;&gt;WAV chunks case study&lt;/a&gt;&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;ZIP, any entries&lt;/td&gt;&#xA;          &lt;td&gt;&lt;a href=&#34;https://github.com/softdevstudio/ebyte/blob/main/schemas/zip.schema.json&#34;&gt;zip.schema.json&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td&gt;&lt;a href=&#34;https://github.com/softdevstudio/ebyte/blob/main/schemas/samples/three.zip&#34;&gt;three.zip&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td&gt;&lt;a href=&#34;https://ebyte.org/ebyte-case-study-inspecting-and-editing-a-real-zip-archive/&#34;&gt;ZIP case study&lt;/a&gt;&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;One-file ZIP&lt;/td&gt;&#xA;          &lt;td&gt;&lt;a href=&#34;https://github.com/softdevstudio/ebyte/blob/main/schemas/zip-one-stored-file.schema.json&#34;&gt;zip-one-stored-file.schema.json&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td&gt;&lt;a href=&#34;https://github.com/softdevstudio/ebyte/blob/main/schemas/samples/one.zip&#34;&gt;one.zip&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td&gt;&lt;a href=&#34;https://ebyte.org/ebyte-case-study-inspecting-and-editing-a-real-zip-archive/&#34;&gt;ZIP case study&lt;/a&gt;&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;/div&gt;&#xA;&lt;p&gt;&lt;em&gt;All five are in the &lt;a href=&#34;https://github.com/softdevstudio/ebyte/tree/main/schemas&#34;&gt;schemas folder on GitHub&lt;/a&gt;, along with a note on each schema&amp;rsquo;s limits.&lt;/em&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Schema Reference</title>
      <link>https://ebyte.org/schema-reference/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://ebyte.org/schema-reference/</guid>
      <description>&lt;p&gt;A schema tells EByte what a binary format looks like: the fields in order, how wide each one is, and how they depend on each other. This page covers version 1 of the schema format, the one EByte reads. The &lt;code&gt;repeat&lt;/code&gt; type needs EByte 0.2.0 or later. Worked schemas for real formats are in the &lt;a href=&#34;https://ebyte.org/schema-library/&#34;&gt;schema library&lt;/a&gt;. The full contract, with every edge case, is &lt;a href=&#34;https://github.com/softdevstudio/ebyte/blob/main/docs/schema-v1.md&#34;&gt;schema-v1.md on GitHub&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;h2 id=&#34;the-file&#34;&gt;The File&lt;/h2&gt;&#xA;&lt;p&gt;A schema is a UTF-8 JSON file with exactly four members:&lt;/p&gt;</description>
    </item>
  </channel>
</rss>
