diff options
author | m-holger <m-holger@kubitscheck.org> | 2022-09-21 21:21:17 +0200 |
---|---|---|
committer | Jay Berkenbilt <jberkenbilt@users.noreply.github.com> | 2022-09-23 12:20:12 +0200 |
commit | 033a66e9a5f859798cfc1920eb3129b40fdaa842 (patch) | |
tree | c7ae8081fb4d66bab81c774ca1c9d64d8b3caeed | |
parent | 92b3543e1211c3010c0a9aa3a36397d301e7f36a (diff) | |
download | qpdf-033a66e9a5f859798cfc1920eb3129b40fdaa842.tar.zst |
Tune unparsing of hex strings in QPDF_String::unparse
-rw-r--r-- | libqpdf/QPDF_String.cc | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/libqpdf/QPDF_String.cc b/libqpdf/QPDF_String.cc index c6cb6c41..b7064f44 100644 --- a/libqpdf/QPDF_String.cc +++ b/libqpdf/QPDF_String.cc @@ -113,7 +113,14 @@ QPDF_String::unparse(bool force_binary) bool use_hexstring = force_binary || useHexString(); std::string result; if (use_hexstring) { - result += "<" + QUtil::hex_encode(this->val) + ">"; + static auto constexpr hexchars = "0123456789abcdef"; + result.reserve(2 * this->val.length() + 2); + result += '<'; + for (const char c: this->val) { + result += hexchars[static_cast<unsigned char>(c) >> 4]; + result += hexchars[c & 0x0f]; + } + result += '>'; } else { result += "("; for (unsigned int i = 0; i < this->val.length(); ++i) { |