<?xml version="1.0" encoding="ISO-8859-1"?>

<!DOCTYPE message PUBLIC
  "-//MLarc//DTD MLarc output files//EN"
  "../../mlarc.dtd"[
  <!ATTLIST message
    listname CDATA #REQUIRED
    title CDATA #REQUIRED
  >
]>

  <?xml-stylesheet href="../../mlarc.xsl" type="text/xsl"?>


<message 
  url="2003/11/c1468e5e400ab0801edc732bbd20f174"
  from="Issac Trotts &lt;ijtrotts@n...&gt;"
  author="Issac Trotts"
  date="2003-11-19T22:40:15"
  subject="Re: [Caml-list] int -&gt; byte array (and back)"
  prev="2003/11/12e20bdc0e7d344c245c194b11ad4d1e"
  next="2003/11/c17081509d394ca21766e84f62f3f830"
  prev-in-thread="2003/11/fa7fd7f24b1fa8fe03faf7957eab5c7b"
  next-in-thread="2003/11/3ecaf058c1e23ddcb74866ee63d2f327"
  prev-thread="2003/11/58c657c03c7683b0214401b6eee2a21f"
  next-thread="2003/11/fb9d232a4943e8114fb8232e3f6e0533"
  root="../../"
  period="month"
  listname="caml-list"
  title="Archives of the Caml mailing list">

<thread subject="[Caml-list] int -&gt; byte array (and back)">
<msg 
  url="2003/11/fa7fd7f24b1fa8fe03faf7957eab5c7b"
  from="Dustin Sallings &lt;dustin@s...&gt;"
  author="Dustin Sallings"
  date="2003-11-19T20:31:35"
  subject="[Caml-list] int -&gt; byte array (and back)">
<msg 
  url="2003/11/c1468e5e400ab0801edc732bbd20f174"
  from="Issac Trotts &lt;ijtrotts@n...&gt;"
  author="Issac Trotts"
  date="2003-11-19T22:40:15"
  subject="Re: [Caml-list] int -&gt; byte array (and back)">
</msg>
<msg 
  url="2003/11/3ecaf058c1e23ddcb74866ee63d2f327"
  from="skaller &lt;skaller@o...&gt;"
  author="skaller"
  date="2003-11-20T06:08:05"
  subject="Re: [Caml-list] int -&gt; byte array (and back)">
</msg>
</msg>
</thread>

<contents>
On Wed, Nov 19, 2003 at 12:31:23PM -0800, Dustin Sallings wrote:
&gt; 
&gt; 	I need to be able to get a byte array (specifically in little-endian 
&gt; format) from an int.  I'll need the reverse as well.  Is there anything 
&gt; that does that in the distribution, or do I need to calculate it 
&gt; 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} &lt;- i land 0xff;
   a.{1} &lt;- (i lsr 8) land 0xff;
   a.{2} &lt;- (i lsr 16) land 0xff;
   a.{3} &lt;- (i lsr 24) land 0xff;
   a;;
val a_of_i :
  int -&gt;
  (int, Bigarray.int8_unsigned_elt, Bigarray.c_layout) Bigarray.Array1.t =
  &lt;fun&gt;
# 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 -&gt; int = &lt;fun&gt;
# let a = a_of_i i;;
val a :
  (int, Bigarray.int8_unsigned_elt, Bigarray.c_layout) Bigarray.Array1.t =
  &lt;abstr&gt;
# 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

</contents>

</message>

