首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

C 語言將數字字符串中片段轉為十六進制字符串並拼接:sprintf 實現思路

     編輯:程式設計綜合問答

需求

字符串 "1234567890123456",提取中間 "789012" 轉為十六進制 "0C0A14" (示例值),拼接回原字符串位置。

實現步驟

  1. 提取子串:用 strncpy、strstr 或指針運算提取 "789012"。
  2. 轉整數:long val = strtol(substr, NULL, 10);
  3. 轉十六進制字符串:char hex[20]; sprintf(hex, "%lX", val); (大寫) 或 "%lx" (小寫)。
  4. 拼接結果:用 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 位。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved