char array to byte array

I need to call a function that requires a byte array ('buffer' for FileLogger::append("data.log", buffer, length))

I have a large char array buffer that I use strcat() on to make the string I need.

I can't use strcat() with a byte array, and I can't simply cast the char array at the function ("loss of precision" error).

Is there a way to convert the char array to byte array without creating a new byte array and copying to it with a for loop?

Thanks

I think not. :frowning:

An answer in 2 minutes! Thanks! :slight_smile:

why not something like this:

byte byteArray[10];
strcat( (char*)(&byteArray[1]),"test");
Serial.print((char*)byteArray);

I realized my problem was that I was not casting to a pointer.

So result = FileLogger::append("data.log", (byte*)message, length); works.

mem,
If I wanted to go the other way . . .

Isn't strcat( (char*)(&byteArray[1]),"test"); the same as simply
strcat( (char*)byteArray,"test"); ?

strcat( (char*)(&byteArray[1]),"test"); is a pointer to the second element in the array
strcat( (char*)byteArray,"test"); is a pointer to the first element

Yes, that makes sense. But then for you suggestion above, why would I want to point to the second element in the array?

I was not sure if you were making strings from pieces of other strings. Good to hear that you are not :wink:

Have fun!

Thanks! Now it's all clear. :-X