[Rcpp-devel] convert to unsigned char* variable
Gustaf Granath
gustaf.granath at gmail.com
Tue Oct 21 22:05:17 CEST 2014
Hi all
Thanks for the replies. After some testing it seems like I dont need the
unsigned stuff and the functions seems to work fine with just a regular
int variable. The functions I wanted to use were just small parts of a
program and in that program bitmap images were loaded and image data
stored as a unsigned char* (for bitmaps unsigned char are often used due
to the 0-255 property I believe). I thought the simpliest solution was
to stick to the original set up (so replicating the variables) but it
seems that is not necessary which make things easier.
However, I got curious how to handle this if I need it.
First, I still dont get the difference between R raw and unsigned char
(if there is one). E.g.
this:
unsigned char a = 'b';
cout << hex << a << endl;
equals
> charToRaw("b")
[1] 62
So can unsigned char be used within Rcpp with RawVector?
For example, is it possible to go from int/char to raw using Rcpp? Or is
the recommended way to use unsigned char to go outside Rcpp as Tim
suggested?
Again, thanks for the input,
Gustaf
On 2014-10-21 10:27, Tim Keitt wrote:
>
>
> On Mon, Oct 20, 2014 at 2:17 PM, Gustaf Granath
> <gustaf.granath at gmail.com <mailto:gustaf.granath at gmail.com>> wrote:
>
> Hi
> Im trying to use some C++ functions in R. However, these functions
> are build around unsigned char* variables (1D array). I have for
> example a large matrix in R that represents black (e.g. 1-bit
> image, 0 and 1s). I cant find a solution to convert a character
> vector into unsigned char* within Rcpp. Im new to Rcpp and C++ so
> I might have missed something obvious here. Please direct me to
> resources on this topic (google did not help much).
>
> A start:
>
> SEXP test(SEXP cM){
> CharacterVector Vc(cM);
> int n = Vr.size();
> RawVector x(n); //is this the same as unsigned char* ?
> //I tried to fill it with char*(Mr)
> but I didnt succeed
> }
>
>
> I tend to go through the standard library as its less of a black box.
> Try creating a std::string and appending your chars to that string.
> Then call obj.c_str() to get the C-style array of chars. Or push the
> chars onto a std::vector and do something like &obj[0] to get a 1-D array.
>
> THK
>
>
> Thanks,
>
> Gustaf
>
> --
> Gustaf Granath (PhD)
> Post doc
> McMaster University
> School of Geography & Earth Sciences
>
> _______________________________________________
> Rcpp-devel mailing list
> Rcpp-devel at lists.r-forge.r-project.org
> <mailto:Rcpp-devel at lists.r-forge.r-project.org>
> https://lists.r-forge.r-project.org/cgi-bin/mailman/listinfo/rcpp-devel
>
>
>
>
> --
> http://www.keittlab.org/
--
Gustaf Granath (PhD)
Post doc
McMaster University
School of Geography & Earth Sciences
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.r-forge.r-project.org/pipermail/rcpp-devel/attachments/20141021/7fc9b6d0/attachment.html>
More information about the Rcpp-devel
mailing list