<div dir="ltr">On Thu, Feb 12, 2015 at 3:22 PM, Neal Becker <<a href="mailto:ndbecker2@gmail.com">ndbecker2@gmail.com</a>> wrote:<br>><br>> Robert Kern wrote:<br>><br>> > On Thu, Feb 12, 2015 at 3:00 PM, Neal Becker <<a href="mailto:ndbecker2@gmail.com">ndbecker2@gmail.com</a>> wrote:<br>> >><br>> >> Robert Kern wrote:<br>> >><br>> >> > On Thu, Feb 12, 2015 at 2:21 PM, Neal Becker <<a href="mailto:ndbecker2@gmail.com">ndbecker2@gmail.com</a>><br>> > wrote:<br>> >> >><br>> >> >> I need to transmit some data values.  These values will be float and<br>> > long<br>> >> >> values.  I need them encoded into a string of bits.<br>> >> >><br>> >> >> The only way I found so far to do this seems rather roundabout:<br>> >> >><br>> >> >><br>> >> >> np.unpackbits (np.array (memoryview(struct.pack ('d', pi))))<br>> >> >> Out[45]:<br>> >> >> array([0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 1, 0, 1, 0, 0, 0,<br>> > 1,<br>> >> > 0,<br>> >> >>        0, 0, 1, 0, 1, 0, 1, 0, 0, 1, 1, 1, 1, 1, 0, 1, 1, 0, 0, 1, 0,<br>> > 0,<br>> >> > 0,<br>> >> >>        0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0],<br>> > dtype=uint8)<br>> >> >><br>> >> >> (which I'm not certain is correct)<br>> >> >><br>> >> >> Also, I don't know how to reverse this process<br>> >> ><br>> >> > You already had your string ready for transmission with<br>> > `struct.pack('d',<br>> >> > pi)`.<br>> >> ><br>> >> > --<br>> >> > Robert Kern<br>> >><br>> >> my transmitter wants an np array of bits, not a string<br>> ><br>> > Can you provide any details on what your "transmitter" is?<br>> ><br>> > --<br>><br>> My transmitter is c++ code that accepts as input a numpy array of np.int32.<br>> Each element of that array has value 0 or 1.<br><br>Ah, great. That makes sense, then.<div><br></div><div><div>def tobeckerbits(x):</div><div>    return np.unpackbits(np.frombuffer(np.asarray(x), dtype=np.uint8)).astype(np.int32)</div><div><br></div><div>def frombeckerbits(bits, dtype):</div><div>    return np.frombuffer(np.packbits(bits), dtype=dtype)[0]</div><br>--<br>Robert Kern</div></div>