[
Home
]
[ Index:
by date
|
by threads
]
[ Message by date: previous | next ] [ Message in thread: previous | next ] [ Thread: previous | next ]
[ Message by date: previous | next ] [ Message in thread: previous | next ] [ Thread: previous | next ]
Date: | 2003-11-19 (22:40) |
From: | Issac Trotts <ijtrotts@n...> |
Subject: | Re: [Caml-list] int -> byte array (and back) |
On Wed, Nov 19, 2003 at 12:31:23PM -0800, Dustin Sallings wrote: > > I need to be able to get a byte array (specifically in little-endian > format) from an int. I'll need the reverse as well. Is there anything > that does that in the distribution, or do I need to calculate it > myself? Just trying to do things the right way. Here's a way to do it: # open Bigarray;; # #load "bigarray.cma";; # let i=Random.int 1024;; val i : int = 735 # let a_of_i i = let a=Array1.create int8_unsigned c_layout 4 in a.{0} <- i land 0xff; a.{1} <- (i lsr 8) land 0xff; a.{2} <- (i lsr 16) land 0xff; a.{3} <- (i lsr 24) land 0xff; a;; val a_of_i : int -> (int, Bigarray.int8_unsigned_elt, Bigarray.c_layout) Bigarray.Array1.t = <fun> # let i_of_a a = a.{0} lor (a.{1} lsl 8) lor (a.{2} lsl 16) lor (a.{3} lsl 24);; val i_of_a : (int, 'a, 'b) Bigarray.Array1.t -> int = <fun> # let a = a_of_i i;; val a : (int, Bigarray.int8_unsigned_elt, Bigarray.c_layout) Bigarray.Array1.t = <abstr> # a.{0},a.{1},a.{2},a.{3};; - : int * int * int * int = (223, 2, 0, 0) # i_of_a a;; - : int = 735 -- Issac Trotts Programmer Center for Neuroscience University of California, Davis ------------------- To unsubscribe, mail caml-list-request@inria.fr Archives: http://caml.inria.fr Bug reports: http://caml.inria.fr/bin/caml-bugs FAQ: http://caml.inria.fr/FAQ/ Beginner's list: http://groups.yahoo.com/group/ocaml_beginners