Re: [R] hex format

From: Earl F. Glynn <>
Date: Fri 08 Apr 2005 - 00:52:04 EST

"Prof Brian Ripley" <> wrote in message news:Pine.LNX.4.61.0504071442200.25401@gannet.stats...
> On Thu, 7 Apr 2005, Steve Vejcik wrote:
> > Has anyone used hex notation within R to represents integers?

> Short answer: yes.
> > as.numeric("0x1AF0")
> [1] 6896
> (which BTW is system-dependent, but one person used it as you asked).

I see this works fine with R 2.0.0 on a Linux platform, but doesn't work at all under R 2.0.1 on Windows.

> as.numeric("0x1AF0")

[1] NA
Warning message:
NAs introduced by coercion

Seems to me the conversion from hex to decimal should be system independent (and makes working with colors much more convenient). Why isn't this system independent now?

The "prefix" on hex numbers is somewhat language dependent ("0x" or $) perhaps but I didn't think this conversion should be system dependent.

I don't remember where I got this, but this hex2dec works under both Linux and Windows (and doesn't need the "0x" prefix).

hex2dec <- function(hexadecimal)
  hexdigits <- c(0:9, LETTERS[1:6])
  hexadecimal <- toupper(hexadecimal) # treat upper/lower case the same   decimal <- rep(0, length(hexadecimal))   for (i in 1:length(hexadecimal))
    digits <- match(strsplit(hexadecimal[i],"")[[1]], hexdigits) - 1     decimal[i] <- sum(digits * 16^((length(digits)-1):0))   }

> hex2dec(c("1AF0", "FFFF"))

[1] 6896 65535

"FFFF" can be interpreted as 65535 as unsigned and -1 as signed on the same system depending on context. This isn't system dependent, but rather context dependent.

I suggest "as.numeric" should perform the unsigned conversion on all systems. What am I missing?


Earl F. Glynn
Scientific Programmer
Bioinformatics Department
Stowers Institute for Medical Research

______________________________________________ mailing list
PLEASE do read the posting guide!
Received on Fri Apr 08 01:06:24 2005

This archive was generated by hypermail 2.1.8 : Fri 03 Mar 2006 - 03:31:03 EST