0

I'm writing my program and i need to get a pointer from c-string. For example, i have a string like "0x3b021e01" and as an output i want a legal pointer void *ptr == 0x3021e101.

I tried this approach:

char *addr = "0x3021e101"; // this address is just an example of 32-bit addr

uint32_t iaddr = from_ch_to_hex(addr); // iaddr == 0x3021e101

void *data_buf = (void *)iaddr; // data_buf = 0x3021e101

uint32_t reg_val = *(uint32_t *)data_buf;

But I get Segmentation fault. What's wrong here? How can i fix it?

1 Answers1

1

0x3b021e101 is an odd number, so you would expect alignment errors.

By the way, unless you know by other means that the address is valid, say by having a pointer to that address, why don't you just use that pointer?

Charlie Burns
  • 6,994
  • 20
  • 29