区分C中字符串(字符数组)中的十六进制值

时间:2017-05-24 15:49:41

标签: c

我在C中解析XML,并且返回响应XML的服务器在实际XML之间引入了一些十六进制值(以字母数字格式)。因为我在C中解析它,作为char数组,我无法区分实际的XML字符串和十六进制值,即(0-9,a-e和A-E)。那么有什么方法可以识别这些十六进制值吗?

注意 - isxdigit()没有帮助,因为它将字符与0-9 a-e和A-E的实际字符进行比较。

字符串示例 - <a:Manufacturer>Apple</a:Manufacturer><a:Materiafe8lStandardName i:nil="true"/><a:Model>iPhone 7 Plus 256GB Silver - ATT</a:Model>

“fe8”是破坏“MaterialStandardName”

的十六进制值

1 个答案:

答案 0 :(得分:4)

这似乎是一个经典的xy-problem。问题是你的内容中有“垃圾”。但你尝试的解决方案是徒劳的。当您展示内容时,它只是破碎的XML。

尽管如此,我对实际问题有一个强烈的猜测:您从http服务器接收此数据,此服务器使用Transfer-Encoding: chunked发送它。插入fe8作为通过线路发送的下一个块的大小。

因此,不要试图以某种方式修复您的乱码内容,而是查看您收到它的位置并修复传输层以正确处理服务器响应并仅返回实际有效负载。