{"id":17,"date":"2005-03-03T22:37:40","date_gmt":"2005-03-04T02:37:40","guid":{"rendered":"http:\/\/hoogervorst.dyndns.org\/~arthur\/wordpress\/?p=17"},"modified":"2005-03-03T22:41:39","modified_gmt":"2005-03-04T02:41:39","slug":"file-format-hacking","status":"publish","type":"post","link":"http:\/\/www.hoogervorst.ca\/arthur\/?p=17","title":{"rendered":"File format hacking"},"content":{"rendered":"<p><span class=\"dropcap\">T<\/span>oday, I was researching the file format of a legacy application that is not supported anymore.  I don&#8217;t think the company that made the program exist anymore, probably suffering the same fate as anyother (legacy) database vendor: swallowed up by larger corporations.\n<\/p>\n<p>I noticed something weird though, while counting bits, bytes and comparing high and lows: why would someone write  or design a database file format where the number of records is stored in the file itself? This is particularly weird knowing the following: all the records have a fixed size, which makes it more or less like a regular <em><a href=\"http:\/\/www.google.com\/search?hl=en&#038;lr=&#038;safe=off&#038;c2coff=1&#038;q=Random+Access+File&#038;btnG=Search\">random access file<\/a><\/em> (minus the header data and field definitions). After all the number of records would be:\n<\/p>\n<p><code>  (length_of_the_file -  (header_def - field_def))\/ record_length) = number_records.<br \/>\n<\/code>\n<\/p>\n<p>Related: In case  you need a good <a href=\"http:\/\/www.mirkes.de\/en\/freeware\/tinyhex.php\">Windows Hex editor<\/a>. The graphing part reminds me of an old hexeditor I once wrote (it should be still around on my old laptop).<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Today, I was researching the file format of a legacy application that is not supported anymore. I don&#8217;t think the company that made the program exist anymore, probably suffering the same fate as anyother (legacy) database vendor: swallowed up by &hellip; <a href=\"http:\/\/www.hoogervorst.ca\/arthur\/?p=17\">Continue reading <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":[],"categories":[4],"tags":[],"_links":{"self":[{"href":"http:\/\/www.hoogervorst.ca\/arthur\/index.php?rest_route=\/wp\/v2\/posts\/17"}],"collection":[{"href":"http:\/\/www.hoogervorst.ca\/arthur\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/www.hoogervorst.ca\/arthur\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/www.hoogervorst.ca\/arthur\/index.php?rest_route=\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"http:\/\/www.hoogervorst.ca\/arthur\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=17"}],"version-history":[{"count":0,"href":"http:\/\/www.hoogervorst.ca\/arthur\/index.php?rest_route=\/wp\/v2\/posts\/17\/revisions"}],"wp:attachment":[{"href":"http:\/\/www.hoogervorst.ca\/arthur\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=17"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/www.hoogervorst.ca\/arthur\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=17"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/www.hoogervorst.ca\/arthur\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=17"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}