I am struggling for quite some time with outputting a raw type to standard output. Here is what I tried and did not work the desired way:
r <- as.raw(c(0x41, 0x00, 0x43)) # r = "A\0C"
cat(rawToChar(r)) # displays warning and skips data after NULL (outputs "A")
cat(r) # outputs "41 00 43"
writeBin(r, stdout()) # error: can only write to binary connection
I am looking for a way to get all three bytes / characters printed to stdout.
If you are using an operating system that has a 'cat' or similar program, we can pipe arbitrary data to stdout like so:
con <- pipe("cat", "wb")
writeBin(as.raw(c(0x41, 0x00, 0x43)), con)
flush(con)
This has been an issue for some time, especially because we would like to use R for common gateway interface (CGI). I don't believe there is a more direct route, but you might look at the RApache source code, to see how the sendBin
function is implemented.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With