[pro] write-char vs. 8-bit bytes

Bob Cassels bobcassels at netscape.net
Fri Apr 11 11:41:19 UTC 2014


Yes. From the original description, this is a binary operation, not a character operation.

On Apr 10, 2014 10:45 PM, raito at raito.com wrote:
>
> I end up doing something like: 
>
> (defmacro with-open-binary-file (args &rest rest) 
>   `(with-open-file (, at args :element-type '(unsigned-byte 8)) , at rest)) 
>
> (defun write-word (word out) 
>   (write-byte (ldb (byte 8 8) word) out) 
>   (write-byte (ldb (byte 8 0) word) out)) 
>
> only because I'm exclusively writing binary stuff to the files this code 
> serves, and because it parallels the C code that does the same thing 
> fairly well. I'm not writing to a socket stream, but this may help anyway. 
> It might need to account for endianness, but I'm not sure. It's been a 
> while since I've looked at it closely. 
>
> Neil Gilmore 
> raito at raito.com 
>
> > I can't easily verify right now, but check the :external-format on your 
> > stream: it may be defaulting to UTF-8 and you will need to specify 
> > something else. 
> > 
> >     -tree 
> > 
> > Sent from my iPhone 
> > 
> >> On Apr 10, 2014, at 10:31, Paul Tarvydas <paultarvydas at gmail.com> wrote: 
> >> 
> >> I'm using sbcl to write-char a 16-bit unsigned integer to a socket as 
> >> two separate unsigned 8-bit bytes, for example 141 should appear as 
> >> 
> >> #x00 #x8d. 
> >> 
> >> SBCL appears to convert the #x8d into a two-byte utf-8 char, resulting 
> >> in 3 bytes written to the stream 
> >> 
> >> \#x00 #xcd #x8d. 
> >> 
> >> What is the proper incantation to achieve this?  (SBCL on Windows, if 
> >> that matters). 
> >> 
> >> thanks 
> >> pt 
> >> 
> >> 
> >> _______________________________________________ 
> >> pro mailing list 
> >> pro at common-lisp.net 
> >> http://common-lisp.net/cgi-bin/mailman/listinfo/pro 
> > 
> > _______________________________________________ 
> > pro mailing list 
> > pro at common-lisp.net 
> > http://common-lisp.net/cgi-bin/mailman/listinfo/pro 
> > 
>
>
>
> _______________________________________________ 
> pro mailing list 
> pro at common-lisp.net 
> http://common-lisp.net/cgi-bin/mailman/listinfo/pro 


More information about the pro mailing list