首页 > 解决方案 > C中的字符串格式化和解析

问题描述

我正在接收十六进制形式的字符串,输入字符串:"E5A682E682A8"。我想在 C 编程中显示它的字符串。

即这里3个字节组成一个字符(中文)。我正在使用以下语句获取输出:

unsigned char output[] = "\xE5\xA6\x82\xE6\x82\xA8";

但我需要帮助才能从输入字符串中获取这种格式。如何解析和处理这个字符串以获得这个输出?

标签: cstringhexstring-formatting

解决方案


最简单的方法可能是使用scanf. 该%x格式读取十六进制,您可以使用宽度修饰符将其一次限制为两个十六进制数字,例如%2x. 该程序看起来像这样:

#include <stdio.h>

int main()
{
    int c;
    while(scanf("%2x", &c) == 1)
        putchar(c);
}   

请注意,检查scanf的返回值很重要,以确保它确实找到了您期望的输入。该程序将在到达 EOF 或遇到任何非十六进制输入时停止。

顺便说一句,由于工作方式的原因scanf,该程序还将接受十六进制对之间的空格。所以输入可能是"E5 A6 82 E6 82 A8",甚至可能有多行:

E5 A6 82
E6 82 A8

在这种情况下,这可能没问题。


推荐阅读