mirror of
https://github.com/LadybirdBrowser/ladybird.git
synced 2024-11-22 15:40:19 +00:00
6e7459322d
Having an alias function that only wraps another one is silly, and keeping the more obvious name should flush out more uses of deprecated strings. No behavior change.
59 lines
1.5 KiB
C++
59 lines
1.5 KiB
C++
/*
|
|
* Copyright (c) 2020, Andreas Kling <kling@serenityos.org>
|
|
* Copyright (c) 2022, Sam Atkins <atkinssj@serenityos.org>
|
|
*
|
|
* SPDX-License-Identifier: BSD-2-Clause
|
|
*/
|
|
|
|
#include <AK/Hex.h>
|
|
#include <AK/StringBuilder.h>
|
|
#include <AK/Types.h>
|
|
#include <AK/Vector.h>
|
|
|
|
namespace AK {
|
|
|
|
ErrorOr<ByteBuffer> decode_hex(StringView input)
|
|
{
|
|
if ((input.length() % 2) != 0)
|
|
return Error::from_string_literal("Hex string was not an even length");
|
|
|
|
auto output = TRY(ByteBuffer::create_zeroed(input.length() / 2));
|
|
|
|
for (size_t i = 0; i < input.length() / 2; ++i) {
|
|
auto const c1 = decode_hex_digit(input[i * 2]);
|
|
if (c1 >= 16)
|
|
return Error::from_string_literal("Hex string contains invalid digit");
|
|
|
|
auto const c2 = decode_hex_digit(input[i * 2 + 1]);
|
|
if (c2 >= 16)
|
|
return Error::from_string_literal("Hex string contains invalid digit");
|
|
|
|
output[i] = (c1 << 4) + c2;
|
|
}
|
|
|
|
return { move(output) };
|
|
}
|
|
|
|
#ifdef KERNEL
|
|
ErrorOr<NonnullOwnPtr<Kernel::KString>> encode_hex(const ReadonlyBytes input)
|
|
{
|
|
StringBuilder output(input.size() * 2);
|
|
|
|
for (auto ch : input)
|
|
TRY(output.try_appendff("{:02x}", ch));
|
|
|
|
return Kernel::KString::try_create(output.string_view());
|
|
}
|
|
#else
|
|
DeprecatedString encode_hex(const ReadonlyBytes input)
|
|
{
|
|
StringBuilder output(input.size() * 2);
|
|
|
|
for (auto ch : input)
|
|
output.appendff("{:02x}", ch);
|
|
|
|
return output.to_deprecated_string();
|
|
}
|
|
#endif
|
|
|
|
}
|