Sorry I did not make myself clear - I thought it was obvious given the
previous postings on this subject.
This java program:

public class TestByte {
        public static void main(String[] args)
        {
                int i = 0x123456ab;
                byte[] b = new byte[1];
                b[0] = (byte) i;
                showInt("i",i);
                showByte("b[0]",b[0]);
        }

        private static void showInt(String s, int x)
        {
                System.out.println(String.format("%s=%d(0x%08x 0x%02x)", s, x, 
x,
x));
        }

        private static void showByte(String s, byte x)
        {
                System.out.println(String.format("%s=%d(0x%08x 0x%02x)", s, x, 
x,
x));
        }
}

compiles and runs, producing this output:

i=305419947(0x123456ab 0x123456ab)
b[0]=-85(0x000000ab 0xab)

But, this bit of clojure:

(defn show [s x] (println (format "%s=%d(0x%08x 0x%02x)" s, x, x, x)))
(def i 0x123456ab)
(def b (byte-array 1))
(aset-byte b 0 (byte i))
(show "i" i)
(show "b[0]" (aget b 0))

throws this exception:
java.lang.IllegalArgumentException: Value out of range for byte:
305419947

Shouldn't these two programs be equivalent?
Presumably they are not because the effect of

int i = (byte) b;

is NOT the same as

(def i (byte b))

-- but surely it should be the same?


On Feb 11, 5:24 pm, Andy Fingerhut <andy.finger...@gmail.com> wrote:
> What can you not do with the signed byte type and arrays of bytes  
> (Java byte[] and Clojure (byte-array ...))?
>
> I believe these are frequently used for Java I/O, and can be used for  
> Clojure I/O as well.
>
> Andy
>
> On Feb 11, 2011, at 9:22 AM, timc wrote:
>
> > How on earth is one supposed to do communication programming (not to
> > mention handling binary files etc) without an unsigned byte type?
>
> > I see that this issue has been talked about vaguely - is there a
> > solution?
>
> > Thanks
>
> > --
> > You received this message because you are subscribed to the Google
> > Groups "Clojure" group.
> > To post to this group, send email to clojure@googlegroups.com
> > Note that posts from new members are moderated - please be patient  
> > with your first post.
> > To unsubscribe from this group, send email to
> > clojure+unsubscr...@googlegroups.com
> > For more options, visit this group at
> >http://groups.google.com/group/clojure?hl=en

-- 
You received this message because you are subscribed to the Google
Groups "Clojure" group.
To post to this group, send email to clojure@googlegroups.com
Note that posts from new members are moderated - please be patient with your 
first post.
To unsubscribe from this group, send email to
clojure+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en

Reply via email to