From mboxrd@z Thu Jan 1 00:00:00 1970 Received: (from majordomo@localhost) by pauillac.inria.fr (8.7.6/8.7.3) id XAA07194; Wed, 19 Nov 2003 23:40:15 +0100 (MET) X-Authentication-Warning: pauillac.inria.fr: majordomo set sender to owner-caml-list@pauillac.inria.fr using -f Received: from nez-perce.inria.fr (nez-perce.inria.fr [192.93.2.78]) by pauillac.inria.fr (8.7.6/8.7.3) with ESMTP id XAA06969 for ; Wed, 19 Nov 2003 23:40:14 +0100 (MET) Received: from manzanita (63-217-154-71.greystoneapts.com [63.217.154.71]) by nez-perce.inria.fr (8.11.1/8.11.1) with ESMTP id hAJMeD114028 for ; Wed, 19 Nov 2003 23:40:13 +0100 (MET) Received: from ijtrotts by manzanita with local (Exim 3.36 #1 (Debian)) id 1AMb0F-0000Rf-00 for ; Wed, 19 Nov 2003 14:40:51 -0800 Date: Wed, 19 Nov 2003 14:40:46 -0800 To: caml-list@inria.fr Subject: Re: [Caml-list] int -> byte array (and back) Message-ID: <20031119224046.GB944@localhost> References: <57648B84-1ACF-11D8-A4B7-000393CFE6B8@spy.net> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <57648B84-1ACF-11D8-A4B7-000393CFE6B8@spy.net> User-Agent: Mutt/1.5.4i From: Issac Trotts X-Loop: caml-list@inria.fr X-Spam: no; 0.00; caml-list:01 issac:01 trotts:01 ijtrotts:01 val:01 735:99 val:01 elt:01 elt:01 abstr:01 735:99 issac:01 trotts:01 davis:99 bigarray:01 Sender: owner-caml-list@pauillac.inria.fr Precedence: bulk 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 = # 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 = # let a = a_of_i i;; val a : (int, Bigarray.int8_unsigned_elt, Bigarray.c_layout) Bigarray.Array1.t = # 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