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