blob: 5545aa57d42bf2fb413adc0788576b6858f02b97 (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
|
/* See LICENSE file for copyright and license details. */
#include "common.h"
/**
* Convert a raw representation of an EDID to an uppercase hexadecimal representation
*
* @param edid The EDID in raw representation
* @param length The length of `edid`
* @return The EDID in uppercase hexadecimal representation,
* NULL` on allocation error, `errno` will be set accordingly
*/
char *
libgamma_behex_edid_uppercase(const unsigned char *restrict edid, size_t length)
{
char *restrict out;
size_t i;
/* Allocate memory area for the output string */
out = malloc((length * 2 + 1) * sizeof(char));
if (!out)
return NULL;
/* Translate from raw octets to hexadecimal */
for (i = 0; i < length; i++) {
out[i * 2 + 0] = "0123456789ABCDEF"[(edid[i] >> 4) & 15];
out[i * 2 + 1] = "0123456789ABCDEF"[(edid[i] >> 0) & 15];
}
/* NUL-terminate the output string */
out[length * 2] = '\0';
return out;
}
|