如何將字符串十進制轉換爲十六進制小數並將它們添加到字符指針?爲什麼memcpy(value + 2, &value_value, value_length);
無效,結果是0x02 0x01
而不是0x02 0x01 0x4f
。將字符串十進制轉換爲十六進制數
#include <string.h> /* strlen */
#include <stdio.h> /* printf */
#include <stdint.h> /* int32_t */
#include <stdlib.h> /* strtol */
int main()
{
char value_type = 0x02;
char *value_value = "79"; /* Must convert to 4f */
char value_length;
int32_t num = strtol(value_value, NULL, 10);
if (num < 255)
value_length = 0x01;
else if (num < 65536)
value_length = 0x02;
else if (num < 16777216)
value_length = 0x03;
else if (num < 4294967295)
value_length = 0x04;
char *value = malloc(2 + value_length);
memcpy(value, &value_type, 1);
memcpy(value + 1, &value_length, 1);
memcpy(value + 2, &value_value, value_length);
/* expectation: 0x02 0x01 0x4f */
for (int i = 0; i < strlen(value); i++)
printf("%02x\n", value[i]);
return 0;
}
'memcpy(value + 2,&value_value,value_length); '沒有做你認爲它做的事。 –
'memcpy(value + 2,#num_value_length);' – zerkms
也沒有複製字符串終止符來使用'strlen' –