Greg Snow
2008-Oct-28 18:23 UTC
[Rd] writting null (\000 or ^@) to an external text file without the new warning
I have some functions that write an external text file for postprocessing by another program. Some instructions to the other program need to be indicated by null values (\000 or ^@). The function currently uses code like: writeChar(rawToChar(as.raw(0)), con) where con is a connection to the file. Previous to version 2.8.0 this worked fine. With 2.8.0 it still works, but I get a warning message about "truncating string with embedded null: '\0'" every time. This is documented and not a bug, but I still find it annoying. One thing I could do is to turn off all warnings before doing this, but then if there is some other warning generated, then I will miss the other warning(s). Is there a better way to write the null to the text file? Or is there a way to suppress just this warning without suppressing any other warnings that may occur? Thanks, -- Gregory (Greg) L. Snow Ph.D. Statistical Data Center Intermountain Healthcare greg.snow at imail.org 801.408.8111
Barry Rowlingson
2008-Oct-28 19:57 UTC
[Rd] writting null (\000 or ^@) to an external text file without the new warning
2008/10/28 Greg Snow <Greg.Snow at imail.org>:> I have some functions that write an external text file for postprocessing by another program. Some instructions to the other program need to be indicated by null values (\000 or ^@). The function currently uses code like: > > writeChar(rawToChar(as.raw(0)), con) > > where con is a connection to the file. Previous to version 2.8.0 this worked fine. With 2.8.0 it still works, but I get a warning message about "truncating string with embedded null: '\0'" every time. This is documented and not a bug, but I still find it annoying. > > One thing I could do is to turn off all warnings before doing this, but then if there is some other warning generated, then I will miss the other warning(s). > > Is there a better way to write the null to the text file? Or is there a way to suppress just this warning without suppressing any other warnings that may occur?The warning happens when you construct the string, so somehow you have to avoid making the string. How about using writeBin with a connection opened in binary mode: > con=file("test2.raw","wb") > writeBin(as.raw(1),con,size=1) > writeBin(as.raw(0),con,size=1) > writeBin(as.raw(0),con,size=1) > writeBin(as.raw(7),con,size=1) > close(con) > Save workspace image? [y/n/c]: n now lets dump it: rowlings at fab008000006:~$ od -x test2.raw 0000000 0001 0700 0000004 Which I think is correct, maybe some fiddling with endianness is needed... Barry
Simon Urbanek
2008-Oct-28 21:19 UTC
[Rd] writting null (\000 or ^@) to an external text file without the new warning
On Oct 28, 2008, at 14:23 , Greg Snow wrote:> I have some functions that write an external text file for > postprocessing by another program. Some instructions to the other > program need to be indicated by null values (\000 or ^@). The > function currently uses code like: > > writeChar(rawToChar(as.raw(0)), con) > > where con is a connection to the file. Previous to version 2.8.0 > this worked fine. With 2.8.0 it still works, but I get a warning > message about "truncating string with embedded null: '\0'" every > time. This is documented and not a bug, but I still find it annoying. >Well, why don't you just use writeChar("", con) that's what you're actually calling anyway since rawToChar(as.raw(0)) is exactly "" as it gets truncated. Cheers, S> One thing I could do is to turn off all warnings before doing this, > but then if there is some other warning generated, then I will miss > the other warning(s). > > Is there a better way to write the null to the text file? Or is > there a way to suppress just this warning without suppressing any > other warnings that may occur? > > Thanks, > > -- > Gregory (Greg) L. Snow Ph.D. > Statistical Data Center > Intermountain Healthcare > greg.snow at imail.org > 801.408.8111 > > ______________________________________________ > R-devel at r-project.org mailing list > https://stat.ethz.ch/mailman/listinfo/r-devel > >