1

I am an absolute newbie to Arduino and C++ and try to go through some tutorials to gain a minimal insight. However I stuck already at some tiny Points. What I want to do? Merge two 8 bit integer Arrays in to one 16 bit Array:

int summand_one[8] = {0,0,0,1,1,0,0,0};
int summand_two[8] = {1,0,0,0,0,0,0,1};
int * summand = new int[16];
std::copy(summand_one, summand_one+8, summand);
std::copy(summand_two, summand_two+8, summand+8);

The result should be

{0,0,0,1,1,0,0,0,1,0,0,0,0,0,0,1}

However it's not working at all. Constructor/destructor/type errors...

Any helpful idea how to do this?

Michel Keijzers
13k7 gold badges41 silver badges58 bronze badges
asked Aug 14, 2019 at 11:11
1
  • 1
    If you get errors, please include them into your question. They are normally very helpful Commented Aug 14, 2019 at 11:13

1 Answer 1

1

It's better to avoid dynamic memory allocation on an Arduino, with only 2 KB of SRAM memory.

Note that your arrays cost 2 (bytes/int) * (8 + 8 + 16) = 64 bytes. And it seems you are only storing booleans, which could be stored in one bit. So consider another alternative (I will not work that out, since maybe memory consumption is not a problem).

However, an easy solution is to use uint8_t.

Also, I would use a simple memcpy. Very naively it would look like:

uint8_t summand_one[8];
uint8_t summand_two[8];
uint8_t summand[16];
void setup()
{
}
void loop() 
{ 
 memcpy(summand, summand_one, 8);
 memcpy(summand + 8, summand_two, 8);
}

Using some constants for the sizes, you get more flexible/readable and maintainable code:

static const uint8_t SummandOneSize = 8;
static const uint8_t SummandTwoSize = 8;
uint8_t summand_one [SummandOneSize];
uint8_t summand_two [SummandTwoSize];
uint8_t summand_merged[SummandOneSize + SummandTwoSize];
void setup()
{
}
void loop() 
{ 
 memcpy(summand_merged , summand_one, SummandOneSize);
 memcpy(summand_merged + SummandOneSize, summand_two, SummandTwoSize);
}
answered Aug 14, 2019 at 11:19
2
  • Thanks, that did it. Also thanks for the extra explanation on the dynamic memory allocation! Commented Aug 14, 2019 at 12:18
  • You're welcome. Commented Aug 14, 2019 at 12:20

Your Answer

Draft saved
Draft discarded

Sign up or log in

Sign up using Google
Sign up using Email and Password

Post as a guest

Required, but never shown

Post as a guest

Required, but never shown

By clicking "Post Your Answer", you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.