* Raymond Toy [2011-10-30 16:30] writes:
I'm not sure that I understand the purpose of the 18. Is this something that is needed later?
Yeah, that was kind of messy. This is what I currently have:
* (let ((buffer (make-array 20 :element-type '(unsigned-byte 8))) (string (make-string 100 :initial-element #\u+f012))) (stream:string-to-octets string :external-format :utf8 :buffer buffer))
#(239 128 146 239 128 146 239 128 146 239 128 146 239 128 146 239 128 146 239 128) 18 6
So 18 is the number of valid octets actually written. (The last two octets form an incomplete conversion.) The 6 is the number of characters consumed to produce those 18 octets.
For the case where no buffer is specified, a new buffer is created and the second return value is the number of octets written (same as the buffer length), and the third value is the number of characters (length of the string).
Is that better?
Yes, looks good. Helmut