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.gran...@gmail.com <mailto:gustaf.gran...@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@lists.r-forge.r-project.org
    <mailto:Rcpp-devel@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

_______________________________________________
Rcpp-devel mailing list
Rcpp-devel@lists.r-forge.r-project.org
https://lists.r-forge.r-project.org/cgi-bin/mailman/listinfo/rcpp-devel

Reply via email to