1*4f2df630SAndroid Build Coastguard Worker // Copyright 2024 The ChromiumOS Authors
2*4f2df630SAndroid Build Coastguard Worker // Use of this source code is governed by a BSD-style license that can be
3*4f2df630SAndroid Build Coastguard Worker // found in the LICENSE file.
4*4f2df630SAndroid Build Coastguard Worker
5*4f2df630SAndroid Build Coastguard Worker #include "hex.h"
6*4f2df630SAndroid Build Coastguard Worker
7*4f2df630SAndroid Build Coastguard Worker namespace trunks {
8*4f2df630SAndroid Build Coastguard Worker
HexEncode(const char * data,std::size_t len)9*4f2df630SAndroid Build Coastguard Worker std::string HexEncode(const char* data, std::size_t len) {
10*4f2df630SAndroid Build Coastguard Worker static constexpr char kHexChars[] = {'0', '1', '2', '3', '4', '5', '6', '7',
11*4f2df630SAndroid Build Coastguard Worker '8', '9', 'A', 'B', 'C', 'D', 'E', 'F'};
12*4f2df630SAndroid Build Coastguard Worker std::string ret;
13*4f2df630SAndroid Build Coastguard Worker ret.reserve(len * 2);
14*4f2df630SAndroid Build Coastguard Worker for (int i = 0; i < len; i++) {
15*4f2df630SAndroid Build Coastguard Worker ret.push_back(kHexChars[data[i] >> 4]);
16*4f2df630SAndroid Build Coastguard Worker ret.push_back(kHexChars[data[i] & 0xf]);
17*4f2df630SAndroid Build Coastguard Worker }
18*4f2df630SAndroid Build Coastguard Worker return ret;
19*4f2df630SAndroid Build Coastguard Worker }
20*4f2df630SAndroid Build Coastguard Worker
21*4f2df630SAndroid Build Coastguard Worker } // namespace trunks
22