[Newbies] Storing a negative SmallInterger in a ByteArray

Mispunt mispunt at users.sourceforge.net
Wed Mar 14 10:02:31 UTC 2007


Thanks Bert it workt with the Two's complement. It is possible to do:
-50 + 256 to get the correct number.

Lukas, you probably need to do the same thing because you can't move
the robot backwards.

Mispunt.

On 3/5/07, Bert Freudenberg <bert at freudenbergs.de> wrote:
> On Mar 5, 2007, at 11:01 , Mispunt wrote:
>
> > Hi people,
> >
> > I am a bit confused...
>
> Maybe you just missed the classes where they talked about bits,
> bytes, words, and how they relate to numbers? ;)
>
> > I am working on an implementation to communicate with the Lego
> > Mindstorms NXT. Al works fine, except I have to store some negative
> > numbers in the ByteArray that should be send to the NXT. Everytime I
> > try, I get an improper store into indexable object.
> >
> > Is it possible to store negative values in a ByteArray?
>
> Sure. It's just bits after all. There are no "negative" bits, a bit
> is 0 or 1. It depends on the interpretation of the bit pattern you
> are sending, the receiving side might interpret some bit patterns as
> negative values and others as positive values.
>
> The most common convention is to use "two's complement", see
>
>         http://en.wikipedia.org/wiki/Two's_complement
>
> E.g., in 8-bit two's complement ("signed char" in C), the bit pattern
> "11111111" stands for -1, whereas as an 8-bit "unsigned char" with
> the same "11111111" pattern would be interpreted as 255.
>
> You just have to find out how negative values are represented in the
> NXT format, like signed chars, signed shorts, signed int or whatever.
>
> Then use the appropriate accessor to put the right bit pattern for
> the value into the byte array:
>
>         byteArray signedByteAt: byteOffset put: value   "8 bits"
>         byteArray signedShortAt: byteOffset put: value  "16 bits"
>         byteArray signedLongAt: byteOffset put: value   "32 bits"
>
> Note these methods use the FFI plugin because they are designed to
> work with C code.
>
> - Bert -
>
>
> _______________________________________________
> Beginners mailing list
> Beginners at lists.squeakfoundation.org
> http://lists.squeakfoundation.org/mailman/listinfo/beginners
>


More information about the Beginners mailing list