If I have a character such as "?" stored in a object called "xxx", how can I obtain the hex code representation of this character? In this case I know that the hex code is "\u00A3", but if I didn't, how would I find out? I would like a function "foo()" such that foo(xxx) would return, say, the string "00A3". I have googled and otherwise searched around and have come up with nothing that seemed at all helpful to me. If I am missing something obvious, please point me at it. (I have found a table on the web, which contains the information that I need, but it is only accessible "by eye" as far as I can discern.) Supplementary question: Suppose I have the string "00A3" stored in an object called "yyy". How do I put that string together with "\u" so as to obtain "?"? I thought I could do xxx <- paste("\u",yyy,sep="") but R won't let me use "\u" "without hex digits". How can I get around this? Thanks. cheers, Rolf Turner
On 14-02-04 7:57 PM, Rolf Turner wrote:> > > If I have a character such as "?" stored in a object called "xxx", how > can I obtain the hex code representation of this character? In this > case I know that the hex code is "\u00A3", but if I didn't, how would I > find out?charToRaw will give you the bytes used to store it: > charToRaw("?") [1] c2 a3 That was on MacOS, which uses UTF-8 encoding. On Windows, using Latin1, > charToRaw("?") [1] a3 You won't see 00A3, because that's not an encoding that R uses, that's the Unicode "code point". It's not too hard to get to that from the UTF-8 encoding, but I don't know any R function that does it.> > I would like a function "foo()" such that foo(xxx) would return, say, > the string "00A3".I don't know how to get that string, but as.character(charToRaw(x)) will put the bytes for x in strings, e.g. as.character(charToRaw("?")) gives [1] "c2" "a3" on a Mac.> > I have googled and otherwise searched around and have come up with > nothing that seemed at all helpful to me. If I am missing something > obvious, please point me at it. > > (I have found a table on the web, which contains the information that I > need, but it is only accessible "by eye" as far as I can discern.) > > Supplementary question: Suppose I have the string "00A3" stored in > an object called "yyy". How do I put that string together with "\u" > so as to obtain "?"? I thought I could do > > xxx <- paste("\u",yyy,sep="") > > but R won't let me use "\u" "without hex digits". How can I get around > this?The \u notation with a code point is handled by the R parser, so you need to parse that string, which means putting it in quotes first, e.g. xxx <- eval(parse(text = paste0("'\\u", yyy, "'"))) That seems pretty excessive. You'd probably be better off doing all of this in C instead... Duncan Murdoch> > Thanks. > > cheers, > > Rolf Turner > > ______________________________________________ > R-help at r-project.org mailing list > https://stat.ethz.ch/mailman/listinfo/r-help > PLEASE do read the posting guide http://www.R-project.org/posting-guide.html > and provide commented, minimal, self-contained, reproducible code. >
On Feb 4, 2014, at 4:57 PM, Rolf Turner wrote:> > > If I have a character such as "?" stored in a object called "xxx", how can I obtain the hex code representation of this character? In this case I know that the hex code is "\u00A3", but if I didn't, how would I find out? > > I would like a function "foo()" such that foo(xxx) would return, say, the string "00A3". >Close:> as.hexmode(utf8ToInt("?"))[1] "a3"> I have googled and otherwise searched around and have come up with nothing that seemed at all helpful to me. If I am missing something obvious, please point me at it. > > (I have found a table on the web, which contains the information that I need, but it is only accessible "by eye" as far as I can discern.) > > Supplementary question: Suppose I have the string "00A3" stored in > an object called "yyy".> intToUtf8(as.hexmode('00A3'))[1] "?"> How do I put that string together with "\u" > so as to obtain "?"? I thought I could do > > xxx <- paste("\u",yyy,sep="") > > but R won't let me use "\u" "without hex digits". How can I get around this? > > Thanks. > > cheers, > > Rolf Turner > > ______________________________________________ > R-help at r-project.org mailing list > https://stat.ethz.ch/mailman/listinfo/r-help > PLEASE do read the posting guide http://www.R-project.org/posting-guide.html > and provide commented, minimal, self-contained, reproducible code.David Winsemius Alameda, CA, USA