inst/misc/ASCII.R

#########################################################################/**
# @RdocObject ASCII
#
# @alias ASCII.BEL
# @alias ASCII.BS
# @alias ASCII.HT
# @alias ASCII.LF
# @alias ASCII.FF
# @alias ASCII.CR
# @alias ASCII.SO
# @alias ASCII.SI
# @alias ASCII.DC1
# @alias ASCII.DC3
# @alias ASCII.ESC
#
# @title "8-bit ASCII table"
#
# \description{
#   ASCII is the 8-bit ASCII table with ASCII characters from 0-255.
# }
#
# \examples{
#   ch <- ASCII[65+1];  # ch == "A"
# }
#
# @author
#
# \seealso{
#   @see charToInt
#   @see intToChar
# }
#
# @keyword character
#
# @keyword internal
#*/#########################################################################
ASCII <- c(
  "\000","\001","\002","\003","\004","\005","\006","\007", # 000-007
  "\010","\011","\012","\013","\014","\015","\016","\017", # 010-017
  "\020","\021","\022","\023","\024","\025","\026","\027", # 020-027
  "\030","\031","\032","\033","\034","\035","\036","\037", # 030-037
  "\040","\041","\042","\043","\044","\045","\046","\047", # 040-047
  "\050","\051","\052","\053","\054","\055","\056","\057", # 050-057
  "\060","\061","\062","\063","\064","\065","\066","\067", # 060-067
  "\070","\071","\072","\073","\074","\075","\076","\077", # 070-077
  "\100","\101","\102","\103","\104","\105","\106","\107", # 100-107
  "\110","\111","\112","\113","\114","\115","\116","\117", # 110-117
  "\120","\121","\122","\123","\124","\125","\126","\127", # 120-127
  "\130","\131","\132","\133","\134","\135","\136","\137", # 130-137
  "\140","\141","\142","\143","\144","\145","\146","\147", # 140-147
  "\150","\151","\152","\153","\154","\155","\156","\157", # 150-157
  "\160","\161","\162","\163","\164","\165","\166","\167", # 160-167
  "\170","\171","\172","\173","\174","\175","\176","\177", # 170-177
  "\200","\201","\202","\203","\204","\205","\206","\207", # 200-207
  "\210","\211","\212","\213","\214","\215","\216","\217", # 210-217
  "\220","\221","\222","\223","\224","\225","\226","\227", # 220-227
  "\230","\231","\232","\233","\234","\235","\236","\237", # 230-237
  "\240","\241","\242","\243","\244","\245","\246","\247", # 240-247
  "\250","\251","\252","\253","\254","\255","\256","\257", # 250-257
  "\260","\261","\262","\263","\264","\265","\266","\267", # 260-267
  "\270","\271","\272","\273","\274","\275","\276","\277", # 270-277
  "\300","\301","\302","\303","\304","\305","\306","\307", # 300-307
  "\310","\311","\312","\313","\314","\315","\316","\317", # 310-317
  "\320","\321","\322","\323","\324","\325","\326","\327", # 320-327
  "\330","\331","\332","\333","\334","\335","\336","\337", # 330-337
  "\340","\341","\342","\343","\344","\345","\346","\347", # 340-347
  "\350","\351","\352","\353","\354","\355","\356","\357", # 350-357
  "\360","\361","\362","\363","\364","\365","\366","\367", # 360-367
  "\370","\371","\372","\373","\374","\375","\376","\377"  # 370-377
);

# Alternatively one can do like this. Idea by Peter Dalgaard,
# Dept. of Biostatistics, University of Copenhagen, Denmark.
# ASCII <- c("\000", sapply(1:255, function(i) parse(text=paste("\"\\",
#                    structure(i,class="octmode"), "\"", sep=""))[[1]]) );

# Some special ASCII characters.
ASCII.BEL <- "\007";
ASCII.BS  <- "\010";
ASCII.HT  <- "\011";
ASCII.LF  <- "\012";
ASCII.FF  <- "\014";
ASCII.CR  <- "\015";
ASCII.SO  <- "\016";
ASCII.SI  <- "\017";
ASCII.DC1 <- "\021";
ASCII.DC3 <- "\023";
ASCII.ESC <- "\033";


#########################################################################/**
# @RdocDefault charToInt
#
# @title "Converts a vector of integers into a vector of ASCII characters"
#
# \description{
#   Converts a @vector of ASCII @characters to a equal length vector of ASCII
#   @integers.
# }
#
# @synopsis
#
# \arguments{
#   \item{ch}{A @character @vector.}
#   \item{...}{Not used.}
# }
#
# \value{
#   Returns an ASCII @character @vector.
# }
#
# @author
#
# \examples{
#   i <- charToInt(unlist(strsplit("Hello world!", split=NULL)))
#   # Gives: 72 101 108 108 111  32 119 111 114 108 100  33
#   ch <- intToChar(c(72,101,108,108,111,32,119,111,114,108,100,33))
#   # Gives: "H" "e" "l" "l" "o" " " "w" "o" "r" "l" "d" "!"
# }
#
# \seealso{
#   @see intToChar
# }
#
# @keyword character
#*/#########################################################################
setMethodS3("charToInt", "default", function(ch, ...) {
  match(ch, ASCII) - 1;
})





#########################################################################/**
# @RdocDefault intToChar
#
# @title "Converts a vector of ASCII characters into a vector of integers"
#
# \description{
#   Converts a vector of ASCII integers to a equal length vector of ASCII
#   characters. To make sure that all values in the input vector are in
#   the range [0,255], the input vector is taken modulo 256.
# }
#
# @synopsis
#
# \arguments{
#   \item{i}{An @integer @vector.}
#   \item{...}{Not used.}
# }
#
# \value{
#   Returns a ASCII @integer @vector.
# }
#
# @author
#
# \examples{
#   i <- charToInt(unlist(strsplit("Hello world!", split=NULL)))
#   # Gives: 72 101 108 108 111  32 119 111 114 108 100  33
#   ch <- intToChar(c(72,101,108,108,111,32,119,111,114,108,100,33))
#   # Gives: "H" "e" "l" "l" "o" " " "w" "o" "r" "l" "d" "!"
# }
#
# \seealso{
#   @see charToInt
# }
#
# @keyword character
#*/#########################################################################
setMethodS3("intToChar", "default", function(i, ...) {
  ASCII[i %% 256 + 1];
})




############################################################################
# HISTORY:
# 2005-02-15
# o Added arguments '...' in order to match any generic functions.
# 2002-10-20
# o Added keywords to the Rdoc comments.
# 2002-05-26
# * Changed the \keyword{}'s to contain valid keyword as in KEYWORDS.db.
# 2002-02-04
# * Added alternative idea of creating the ASCII table.
# 2002-01-29
# * Rewritten to make use of setMethodS3.
# 2001-08-06
# * Moved ASCII back to R.oo from R.base. It is needed by the String class.
#   By moving it back R.oo is stand-alone again.
# 2001-07-28
# * Also defined up the ASCII.BEL constants etc.
# * Moved the ASCII stuff from R.oo to R.base.
# 2001-07-13
# * Made all methods using UseMethod.
# 2001-06-07
# * Added [R] documents to ASCII, charToInt and intToChar.
# 2001-04-02
# * Created!
############################################################################

Try the R.oo package in your browser

Any scripts or data that you put into this service are public.

R.oo documentation built on June 12, 2022, 9:05 a.m.