From: Niklas Holsti <niklas.holsti@tidorum.invalid>
Subject: Re: xor
Date: Sun, 25 Mar 2012 22:26:32 +0300
Date: 2012-03-25T22:26:32+03:00 [thread overview]
Message-ID: <9t99r9F6e2U1@mid.individual.net> (raw)
In-Reply-To: <Pine.GSO.4.64.1203251605090.1390@kodiak1>
On 12-03-25 18:16 , Michael Moeller wrote:
> Thank you for your quick answer.
>
> Can I use Unsigned_Byte_T to read in a byte from a file
> as in C? I haven't looked into this yet.
C has several ways to "read in a byte from a file", depending on the
type of the file and how you specify which byte you want to read. Can
you be more specific?
If you mean reading an 8-bit octet from a "binary file" -- that is, not
a text file -- you can use the Ada library packages Ada.Sequential_IO or
Ada.Direct_IO, depending on your needs. These are generic packages, so
you must instantiate them for the type of data, for example Unsigned_Byte_T.
If the file contains a mixture of different kinds of "binary" data, for
example both 8-bit data and 16-bit data, or more complex structures, you
should use the Ada "stream" facility from Ada.Streams.Stream_IO. The
stream facility helps you handle things like different endianness,
padding, packing, unusual encodings, and so on.
The stream facility does not use generics; instead, it uses a
combination of tagged types and the special "stream attribute"
operations T'Read, T'Write, et cetera, which you can define differently
for each type, T, that is present in your file. For example, your 'Read
operation for a 16-bit integer will specify whether the integer is
stored in little-endian or big-endian order in the file (by reading two
8-bit integers, using 'Read for the 8-bit type, in the corresponding order).
The stream technique takes a bit of study to understand, but it works
very well, especially if the file has a mixture of different complex
structures of data, or if the file is created by a different language or
computer and is not in the "native" form for your Ada compiler.
--
Niklas Holsti
Tidorum Ltd
niklas holsti tidorum fi
. @ .
next prev parent reply other threads:[~2012-03-25 19:26 UTC|newest]
Thread overview: 35+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-03-25 14:28 xor Michael Moeller
2012-03-25 14:01 ` xor Niklas Holsti
2012-03-25 15:16 ` xor Michael Moeller
2012-03-25 19:05 ` xor Dmitry A. Kazakov
2012-03-27 20:31 ` xor Michael Moeller
2012-03-25 19:26 ` Niklas Holsti [this message]
2012-03-27 20:09 ` xor Michael Moeller
2012-03-27 19:44 ` xor Dmitry A. Kazakov
2012-03-27 21:16 ` xor Michael Moeller
2012-03-27 21:14 ` xor Simon Wright
2012-03-27 22:56 ` xor Michael Moeller
2012-03-27 22:03 ` xor Georg Bauhaus
2012-03-27 23:50 ` xor Michael Moeller
[not found] ` <bbedne9wdofZyu_SnZ2dnUVZ_hydnZ2d@earthlink.com>
2012-03-28 12:18 ` xor Michael Moeller
2012-03-28 12:48 ` xor Georg Bauhaus
2012-03-28 15:23 ` xor Michael Moeller
2012-03-28 15:58 ` xor Niklas Holsti
2012-03-28 17:28 ` xor Michael Moeller
2012-03-28 23:25 ` xor Randy Brukardt
2012-03-29 5:17 ` xor Niklas Holsti
2012-03-29 23:41 ` xor Randy Brukardt
2012-03-30 21:53 ` xor Niklas Holsti
[not found] ` <jtmdnfjWWsUYoO7SnZ2dnUVZ_gSdnZ2d@earthlink.com>
2012-03-28 17:44 ` xor Michael Moeller
2012-03-28 14:07 ` xor Dmitry A. Kazakov
2012-03-28 16:16 ` xor Michael Moeller
2012-03-28 16:08 ` xor Dmitry A. Kazakov
2012-03-28 17:36 ` xor Michael Moeller
[not found] ` <tdadna1MV6uj5O7SnZ2dnUVZ_jidnZ2d@earthlink.com>
2012-03-28 21:48 ` xor Georg Bauhaus
2012-03-29 7:43 ` xor Dmitry A. Kazakov
2012-03-29 7:49 ` xor Simon Wright
2012-03-27 21:28 ` xor Georg Bauhaus
2012-03-27 19:50 ` xor Randy Brukardt
2012-03-27 21:44 ` xor Michael Moeller
2012-03-27 22:01 ` xor Georg Bauhaus
2012-03-27 20:13 ` xor Jeffrey Carter
replies disabled
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox