[R] Converting Decimal numbers into Binary

Rui Barradas
2019-12-27T21:22:16Z

Hello,

You forgot to cc the list, I'm replying all to have a complete thread so
that others now and in the future can search similar problems they might
encounter.
The following function bin2dec works as expected.


bin2dec <- function(x){
   s <- strsplit(x, "")
   s <- lapply(s, function(x){
     sum(as.integer(x)*2^((length(x) - 1):0))
   })
   unlist(s)
}


bin2dec("001100001111010101000011011110")
#[1] 205344990

b <- utf8ToBin("133m at ogP00PD;88MD5MTDww at 2D7k", out =
"bin")
bin2dec(b)
# [1]  1  3  3 53 16 55 47 32  0  0 32 20 11  8  8 29 20  5 29 36
#[21] 20 63 63 16  2 20  7 51


Hope this helps,

Rui Barradas

?s 20:52 de 27/12/19, Paul Bernal escreveu:
>  ? Dear friend Rui,
>
> Hope you are doing well, thanks for the previous feedback,
>
> I have tried different things but have not been able to convert binary
> numbers back to decimal, to test if the output is? correct, I am taking
> the binary sequence = "001100001111010101000011011110" as a
string, and
> this should give the following value (after converting back to decimal)
> = 205,344,990?
>
> I have labeled my different attempts as (Attempt 1, ..., Attempt 3) but
> none have worked (see the code below):
>
> library(stringi)
> library(dplyr)
> library(R.utils)
>
>
> #dataset1 <- data.frame(maml.mapInputPort(1)) # class: data.frame
>
>
> ascii_datformat <- utf8ToInt("133m at ogP00PD;88MD5MTDww at
2D7k")
> ascii_datformat
>
> Base <- ascii_datformat - 48
>
> decy <- ifelse(Base > 40, Base-8, Base)
>
>
> biny <- intToBin(decy)
>
> binyframe <- data.frame(biny)
>
> tbinyframe <- paste(t(binyframe[,1]), collapse="")
>
> binyframe
> tbinyframe
>
> # Attempt 1
>
> bin2dec <- function(x)
> {
>  ? x <- as.character(as.numeric(x))
>  ? b <- as.numeric(unlist(strsplit(x, "")))
>  ? pow <- 2 ^ ((length(b) - 1):0)
>  ? sum(pow[b == 1])
> }
>
> # Attempt 2
> #bin2dec.easy <- function(binaryvector) {
> # ?sum(2^(which(rev(binaryvector)==TRUE)-1))
> #}
>
> # Attempt 3
>
> #utf8ToBin <- function(x, out = c("ascii", "dec",
"bin")){
> # ? out <- match.arg(out)
> # ? ascii_datformat <- utf8ToInt(x)
> # ? Base <- ascii_datformat - 48
> # ? Base <- ifelse(Base > 40, Base - 8, Base)
> # ? Bin <- R.utils::intToBin(Base)
> # ? switch (out,
> # ? ? "ascii" = ascii_datformat,
> # ? ? "dec" = Base,
> # ? ? "bin" = Bin
> # ? )
> #}
>
>
> z <- substr(tbinyframe, 9, 38)
>
> result <- bin2dec(z)
> result
>
> Any guidance will be greatly appreciated,
>
> Best regards,
>
> Paul
>
> El vie., 27 dic. 2019 a las 12:31, Rui Barradas (<ruipbarradas at
sapo.pt
> <mailto:ruipbarradas at sapo.pt>>) escribi?:
>
>     Hello,
>
>
>     Your code and the answers provided, specially Marc's, led me to
>
>
>     utf8ToBin <- function(x, out = c("ascii", "dec",
"bin")){
>      ? ?out <- match.arg(out)
>      ? ?ascii_datformat <- utf8ToInt(x)
>      ? ?Base <- ascii_datformat - 48
>      ? ?Base <- ifelse(Base > 40, Base - 8, Base)
>      ? ?Bin <- R.utils::intToBin(Base)
>      ? ?switch (out,
>      ? ? ?"ascii" = ascii_datformat,
>      ? ? ?"dec" = Base,
>      ? ? ?"bin" = Bin
>      ? ?)
>     }
>
>     utf8ToBin("133m@", out = "ascii")
>     utf8ToBin("133m@", out = "dec")
>     utf8ToBin("133m@", out = "bin")
>
>
>     Hope this helps,
>
>     Rui Barradas
>
>     ?s 16:30 de 27/12/19, Paul Bernal escreveu:
>      > Dear Jeff,
>      >
>      > Hope you are doing great. The link I provide below has the
>     results I am
>      > expecting. I am doing a test, trying to convert this string:
>     "133m at ogP00PD
>      > ;88MD5MTDww at 2D7k" into ascii numbers, then to decimal,
and
>     ultimately, into
>      > binary. I am trying to recreate the results obtained in the link
>     below.
>      >
>      > http://www.it-digin.com/blog/?p=20
>      >
>      > Hope this answers your question.
>      >
>      > Thanks for any guidance you can provide,
>      >
>      > Cheers,
>      >
>      > Paul
>      >
>      > El vie., 27 dic. 2019 a las 11:18, Jeff Newmiller
>     (<jdnewmil at dcn.davis.ca.us <mailto:jdnewmil at
dcn.davis.ca.us>>)
>      > escribi?:
>      >
>      >> Your question is incomplete... what do you expect the result
to be?
>      >>
>      >> Perhaps [1] is relevant?
>      >>
>      >> [1]
>      >>
>
https://stackoverflow.com/questions/52298995/r-binary-decimal-conversion-confusion-ais-data
>      >>
>      >> On December 27, 2019 7:42:36 AM PST, Paul Bernal
>     <paulbernal07 at gmail.com <mailto:paulbernal07 at
gmail.com>>
>      >> wrote:
>      >>> Dear friends,
>      >>>
>      >>> Hope you are all doing well. I need to find a way to
convert ascii
>      >>> numbers
>      >>> to six digit binary numbers:
>      >>>
>      >>> I am working with this example, I converted the string to
>     ascii, and
>      >>> finally to decimal, but I am having trouble converting
the decimal
>      >>> numbers
>      >>> into their six digit binary representation. The code
below is
>     exactly
>      >>> what
>      >>> I have so far:
>      >>>
>      >>> ascii_datformat <- utf8ToInt("133m at
ogP00PD;88MD5MTDww at 2D7k")
>      >>> ascii_datformat
>      >>>
>      >>> Base <- ascii_datformat - 48
>      >>>
>      >>> ifelse(Base > 40, Base-8, Base)
>      >>>
>      >>> x <- rev(intToBits(Base))
>      >>> dec2bin <- function(x)
paste(as.integer(rev(intToBits(x))),
>     collapse >      >>> "")
>      >>> dec2bin
>      >>>
>      >>> any guidance will be greatly appreciated,
>      >>>
>      >>> Best regards,
>      >>>
>      >>> Paul
>      >>>
>      >>>? ? ? ? [[alternative HTML version deleted]]
>      >>>
>      >>> ______________________________________________
>      >>> R-help at r-project.org <mailto:R-help at
r-project.org> mailing list
>     -- To UNSUBSCRIBE and more, see
>      >>> 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.
>      >>
>      >> --
>      >> Sent from my phone. Please excuse my brevity.
>      >>
>      >
>      >? ? ? ?[[alternative HTML version deleted]]
>      >
>      > ______________________________________________
>      > R-help at r-project.org <mailto:R-help at r-project.org>
mailing list
>     -- To UNSUBSCRIBE and more, see
>      > 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.
>      >
>