字符串 "1234567890123456",提取中間 "789012" 轉為十六進制 "0C0A14" (示例值),拼接回原字符串位置。
strncpy、strstr 或指針運算提取 "789012"。long val = strtol(substr, NULL, 10);char hex[20]; sprintf(hex, "%lX", val); (大寫) 或 "%lx" (小寫)。sprintf 或 strcat 組合頭部、十六進制串、尾部。char result[50];
sprintf(result, "%.*s%s%s", 6, str, hex, str + 12); // 前6字符 + hex + 從第12字符開始
#include
#include
#include
int main() {
char str[] = "1234567890123456";
char substr[10];
strncpy(substr, str + 6, 6); // 從索引6取6字符 "789012"
substr[6] = '\0';
long val = strtol(substr, NULL, 10);
char hex[20];
sprintf(hex, "%lX", val); // "C0A14" (無前導0)
// 補齊前導0 (若需固定長度)
char result[50];
sprintf(result, "%.6s%06s%s", str, hex, str + 12); // 前6 + 補0後的hex + 尾部
printf("%s\n", result);
return 0;
}
strtol:字符串轉長整數,支持進制指定。sprintf:格式化輸出到字符串,%lX 十六進制大寫,%06lX 補零至 6 位。