You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何获取十六进制≤0x20的ASCII字符字节编码?C字符串插入0x18方法

在C字符串中插入0x18控制字符的实现方法

直接在字符串字面量中插入

C语言支持十六进制转义序列,你可以直接用\x18在字符串的指定位置插入0x18字符,示例代码:

#include <stdio.h>

int main() {
    char str[] = "前缀\x18后缀";
    // 以十六进制打印验证字符编码
    for (int i = 0; str[i] != '\0'; i++) {
        printf("%02X ", (unsigned char)str[i]);
    }
    return 0;
}

运行后会输出对应字符的十六进制值,其中会包含18,说明0x18已成功插入。

手动在字符数组指定位置插入

如果需要动态在已有的字符串中插入0x18,可以通过内存移动+赋值的方式实现,示例:

#include <stdio.h>
#include <string.h>

int main() {
    char str[50] = "原有字符串内容";
    int insert_pos = 4; // 要插入的位置索引(从0开始)
    
    // 将插入位置及之后的字符向后移动1位,留出空间
    memmove(str + insert_pos + 1, str + insert_pos, strlen(str) - insert_pos + 1);
    // 赋值0x18
    str[insert_pos] = 0x18;
    
    // 验证输出
    for (int i = 0; str[i] != '\0'; i++) {
        printf("%02X ", (unsigned char)str[i]);
    }
    return 0;
}

这里用memmove而非strcpy,是因为它能安全处理内存重叠的情况。

处理输入字符串的插入场景

如果是从用户输入的字符串中插入0x18,需要先获取输入,再调整内存空间后插入,示例:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int main() {
    char *input_str = NULL;
    size_t buf_len = 0;
    
    // 获取用户输入(包含空格)
    printf("请输入字符串:");
    getline(&input_str, &buf_len, stdin);
    // 去除输入末尾的换行符
    input_str[strcspn(input_str, "\n")] = '\0';
    
    int insert_pos = 3; // 指定插入位置
    // 重新分配内存,多预留1个字节给0x18
    char *new_str = realloc(input_str, strlen(input_str) + 2);
    if (!new_str) {
        free(input_str);
        return 1;
    }
    input_str = new_str;
    
    // 后移字符并插入0x18
    memmove(input_str + insert_pos + 1, input_str + insert_pos, strlen(input_str) - insert_pos + 1);
    input_str[insert_pos] = 0x18;
    
    // 验证输出
    printf("插入后的十六进制编码:");
    for (int i = 0; input_str[i] != '\0'; i++) {
        printf("%02X ", (unsigned char)input_str[i]);
    }
    
    free(input_str);
    return 0;
}

注意:HTML转义字符对C字符串无效,那是用于HTML文档的转义规则;无需借助汇编指令,C语言本身就提供了直接处理控制字符的语法和工具函数。

内容的提问来源于stack exchange,提问作者user20332975

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.15 11:05:22