Have you looked at 3!:4 and 3!:5 ?


On Wed, Jan 21, 2015 at 7:56 PM, Jon Hough <[email protected]> wrote:

> Basically, I am hoping to pack data in J and be able to unpack in Python,
> or any other language (and vice versa).
> Thats why I am a little concerned about these 5 extra words added.
>
> --- Original Message ---
>
> From: "'Pascal Jasmin' via Programming" <[email protected]>
> Sent: January 22, 2015 12:23 PM
> To: [email protected]
> Subject: Re: [Jprogramming] J Equivalent of Python Struct.Pack/Unpack
>
> 3!:3 is the easiest way  to see those extra bytes.
>
> I don't know if you have a very narrow constant rank and shape format, but
> even if you did, you could read it from the file rather than assume it is
> in expected format.
>
> using the reference page and simple examples as below
> 3!:3 ] 5
> 3!:3 ] <5
> 3!:3 ] <5;3
>
> Something interesting about the format is that adding an extra level of
> boxing around data, doesn't change any of the data offsets within the
> data.  It just adds a 5 word header to it.
>
> ----- Original Message -----
> From: Jon Hough <[email protected]>
> To: "[email protected]" <[email protected]>
> Cc:
> Sent: Wednesday, January 21, 2015 7:49 PM
> Subject: Re: [Jprogramming] J Equivalent of Python Struct.Pack/Unpack
>
> It seems, if I want to send the data over a network, I'm going to have to
> strip off several bytes after packing, because
> x 3!:1
> puts on several bytes on the front of the result. e.g. flag, type, num of
> elements etc. Is this normal to do this?
>
> > Date: Wed, 21 Jan 2015 13:04:57 +0900
> > From: [email protected]
> > To: [email protected]
> > Subject: Re: [Jprogramming] J Equivalent of Python Struct.Pack/Unpack
> >
> > Thanks.
> > I am working on a small project in which I need to use these binary
> string conversions and parse them in other languages, eg python.
> >
> > I am hoping if I use 3!: 1  then I can unpack in Python.
> >
> > --- Original Message ---
> >
> > From: "Raul Miller" <[email protected]>
> > Sent: January 21, 2015 10:57 AM
> > To: "Programming forum" <[email protected]>
> > Subject: Re: [Jprogramming] J Equivalent of Python Struct.Pack/Unpack
> >
> > I usually use 3!:4 and 3!:5 when reading objects streamed to file from
> > someone else's code. I wind up writing a read verb (and a write verb)
> > for every "type" which reads its stuff starting at a global offset
> > into the reference character array and then updates that offset to
> > point at the end. If there's ever an array of them, the dyadic form of
> > the verb reads x of them. (And one dimension is sufficient in this
> > context.)
> >
> > I can tell my code is correct when it can read a file to my internal
> > representation and write it back out without introducing any defects
> > on my test data set. Except I can also identify bugs in the original
> > code when coding to spec requires that what I write back out differs
> > from what I read in. That can get annoying sometimes (it means that
> > for complete correctness I need to represent the buggy data - that's
> > the sort of thing that makes me feel like abandoning a project or at
> > least wish I could replace larger parts of the system).
> >
> > It's very "forth-like" in feel, and verbose. And some types require a
> > bit of manipulation after the initial conversion, to make things
> > correct. But, this seems to me to be a fairly appropriate match to the
> > problem.
> >
> > Your mileage may vary.
> >
> > Thanks,
> >
> > --
> > Raul
> >
> > On Tue, Jan 20, 2015 at 10:47 AM, 'Pascal Jasmin' via Programming
> > <[email protected]> wrote:
> > > 3!:1 is more powerful than this.  Converts any noun to a binary
> (string) representation.  3!:2 unpacks.
> > >
> > >
> > > ----- Original Message -----
> > > From: Jon Hough <[email protected]>
> > > To: "[email protected]" <[email protected]>
> > > Cc:
> > > Sent: Tuesday, January 20, 2015 10:42 AM
> > > Subject: [Jprogramming] J Equivalent of Python Struct.Pack/Unpack
> > >
> > > Python has a useful module called struct
> > > https://docs.python.org/2/library/struct.html
> > > which is useful for converting strings to packed binary data.
> > > e.g.
> > > data = struct.pack('B', someHexString)
> > >
> > > Does J have an equivalent or similar function / verb?
> > > I spent a bit of time looking, but couldn't find anything.
> > >
> > > Example usage would be sending data over a network.
>
----------------------------------------------------------------------
For information about J forums see http://www.jsoftware.com/forums.htm

Reply via email to