c :解析长字符串中的十六进制数字
我正在使用 libxml2 解析 XML 文件,并且需要提取一个十六进制数字 来自 xml 属性。现在,lib2xml 不会给出以 null 结尾的字符串 对于属性,只需指向属性的开头和结尾的指针。
因此,给定 .........FILL:BB0011AA;.........................
(其中点表示任意 字符),char* begin
指向 FILL
中的 F,char* end
指向 到分号,我怎样才能有效地提取十六进制数字,而不需要 复制到以空结尾的字符串中?
I am parsing an XML file using libxml2, and I need to pull out a hex number
from an xml attribute. Now, lib2xml doesn't give a null terminated string
for the attribute, just pointers to the beginning and end of the attribute.
So, given .........FILL:BB0011AA;...............
(where dots indicate arbitrary
characters), and char* begin
pointing to the F in FILL
, and char* end
pointing
to the semi-colon, how can I efficiently pull out the hex number, WITHOUT making
a copy into a null terminated string?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
就像这样:
我认为即使
begin
处的数据根本不是字符串,即如果它不包含NUL
终止符,上面的内容也是安全的。由于如果发现任何非十六进制字符,%x
将中止,因此不应该有任何它跑入内存中的风险。我想不出它会疯狂运行的情况。Like so:
I think the above is safe even if the data at
begin
isn't a string at all, i.e. if it doesn't contain aNUL
terminator. Since the%x
will abort if any non-hexadecimal character is found, there shouldn't be any risk of it running off into la-la land in memory. I can't come up with a case where it would run amok.