[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