this is a bit crazy. I'm trying to comment on it.
if you simply pass the decoded unicode bytes '<c' won't be appropriate. 
If you pass '<U' instead some weird mess will happen on reading (not well understood).
So we convert the bytes back to a string and let numpy do the job.