[R] Converting Decimal numbers into Binary

Rui Barradas ru|pb@rr@d@@ @end|ng |rom @@po@pt
Fri Dec 27 22:22:16 CET 2019


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 using ogP00PD;88MD5MTDww using 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 using ogP00PD;88MD5MTDww using 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 using sapo.pt 
> <mailto:ruipbarradas using 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 using ogP00PD
>      > ;88MD5MTDww using 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 using dcn.davis.ca.us <mailto:jdnewmil using 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 using gmail.com <mailto:paulbernal07 using 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 using ogP00PD;88MD5MTDww using 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 using r-project.org <mailto:R-help using 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 using r-project.org <mailto:R-help using 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.
>      >
>



More information about the R-help mailing list