caml-list - the Caml user's mailing list
 help / color / mirror / Atom feed
* [Caml-list] Using 16 bits integers
@ 2001-07-03 18:05 jarvarvar
  2001-07-03 18:21 ` Brian Rogoff
  2001-07-03 18:34 ` David McClain
  0 siblings, 2 replies; 4+ messages in thread
From: jarvarvar @ 2001-07-03 18:05 UTC (permalink / raw)
  To: caml-list

Hello, I'm just new to OCaml. I'm writing a program wich uses a lot of
16 bits operations, and writes them to a buffer. For writing into the
buffer, it is needed for the data to be in 16 bits, not in 32 bits.
Exactly, the program is like a sound synthesizer, so data cannot be send
to sound card in 32 bits.
My problem with OCaml is: how can I manage 16 bits data, and make
operations with it? I had not seen any type in Ocaml with 16bits lenght
(int is 32 bits in my machine). This will frustate my project if I do
not find a solution, so I will use C if there is no other solution...
but I would not like to do if I can avoid it, because I like very much
Ocaml.

I'm hopping your answers. Thanks.

-------------------
Bug reports: http://caml.inria.fr/bin/caml-bugs  FAQ: http://caml.inria.fr/FAQ/
To unsubscribe, mail caml-list-request@inria.fr  Archives: http://caml.inria.fr


^ permalink raw reply	[flat|nested] 4+ messages in thread
* Re: [Caml-list] Using 16 bits integers
@ 2001-07-04  2:21 Arturo Borquez
  0 siblings, 0 replies; 4+ messages in thread
From: Arturo Borquez @ 2001-07-04  2:21 UTC (permalink / raw)
  To: jarvarvar; +Cc: caml-list

On Tue, 03 July 2001, jarvarvar@airtel.net wrote:

> 
> Hello, I'm just new to OCaml. I'm writing a program wich uses a lot of
> 16 bits operations, and writes them to a buffer. For writing into the
> buffer, it is needed for the data to be in 16 bits, not in 32 bits.
> Exactly, the program is like a sound synthesizer, so data cannot be send
> to sound card in 32 bits.
> My problem with OCaml is: how can I manage 16 bits data, and make
> operations with it? I had not seen any type in Ocaml with 16bits lenght
> (int is 32 bits in my machine). This will frustate my project if I do
> not find a solution, so I will use C if there is no other solution...
> but I would not like to do if I can avoid it, because I like very much
> Ocaml.
> 
> I'm hopping your answers. Thanks.
> 
Hi,
Very simple. Do all your programm computations in
OCaml native ints (32 or 64 bit CPU) and when put
these ints into the buffer then 'convert' them to
16 bits.

Example:

let put_int16_into_buffer buffer position int_value =
  buffer.[pos] <- char_of_int (int_value land 0xff);
  buffer.[pos + 1] <- char_of_int (int_value lsr 8)

You must verify endianness of your CPU to fetch LH or
HL. The example shows the case of little-endian used
in all Intel CPU's. In a similar way you can retrieve
ints from a buffer

let get_int16_to_int_from_buffer buffer position =
  let int_value = (int_of_char buffer.[position] +
    ((int_of_char buffer.[position + 1]) * 256) in
  int_value

Best Regards
Arturo Borquez 





Find the best deals on the web at AltaVista Shopping!
http://www.shopping.altavista.com
-------------------
Bug reports: http://caml.inria.fr/bin/caml-bugs  FAQ: http://caml.inria.fr/FAQ/
To unsubscribe, mail caml-list-request@inria.fr  Archives: http://caml.inria.fr


^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2001-07-04  2:21 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2001-07-03 18:05 [Caml-list] Using 16 bits integers jarvarvar
2001-07-03 18:21 ` Brian Rogoff
2001-07-03 18:34 ` David McClain
2001-07-04  2:21 Arturo Borquez

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).