#include <stdio.h>
#include <stdlib.h>
#include <string.h>
const char *buf = "FE2A8D0000CA372D4F461B1D9A1883A32F018823FFFF60D30000484200000D0A0F270300030006000000B0040307000356A3";
static unsigned char hexNibble(const char *str)
{
unsigned char hex = *str;
if (hex >= 'a' && hex <='f')
{
hex -= ('a' - 10);
}
else if (hex >= 'A' && hex <= 'F')
{
hex -= ('A' - 10);
}
else if (hex >= '0' && hex <= '9')
{
hex -= '0';
}
else
{
hex = 0;
}
return hex;
}
static size_t createCharArrayFromHexString(char *result[], const char *str)
{
if (!len) return 0;
size_t bytes = len / 2;
int mostSignificantNibble = len % 2;
size_t size = bytes + mostSignificantNibble;
char *out = *result;
const char *in = str;
if (mostSignificantNibble)
{
*out++ = hexNibble(in++);
}
while (bytes)
{
*out = hexNibble(in++);
*out <<= 4;
*out++ |= hexNibble(in++);
--bytes;
}
return size;
}
int main(void) {
int value = 0;
char *converted;
size_t convertedSize = createCharArrayFromHexString(&converted, buf);
for (int i = 0; i < convertedSize; ++i)
{
printf( "0x%02hhx\n", converted
[i
]); }
}
I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxzdGRsaWIuaD4KI2luY2x1ZGUgPHN0cmluZy5oPgoKY29uc3QgY2hhciAqYnVmID0gIkZFMkE4RDAwMDBDQTM3MkQ0RjQ2MUIxRDlBMTg4M0EzMkYwMTg4MjNGRkZGNjBEMzAwMDA0ODQyMDAwMDBEMEEwRjI3MDMwMDAzMDAwNjAwMDAwMEIwMDQwMzA3MDAwMzU2QTMiOwoKc3RhdGljIHVuc2lnbmVkIGNoYXIgaGV4TmliYmxlKGNvbnN0IGNoYXIgKnN0cikKewogICAgdW5zaWduZWQgY2hhciBoZXggPSAqc3RyOwogICAgaWYgKGhleCA+PSAnYScgJiYgaGV4IDw9J2YnKQogICAgewogICAgICAgIGhleCAtPSAoJ2EnIC0gMTApOwogICAgfQogICAgZWxzZSBpZiAoaGV4ID49ICdBJyAmJiBoZXggPD0gJ0YnKQogICAgewogICAgICAgIGhleCAtPSAoJ0EnIC0gMTApOwogICAgfQogICAgZWxzZSBpZiAoaGV4ID49ICcwJyAmJiBoZXggPD0gJzknKQogICAgewogICAgICAgIGhleCAtPSAnMCc7CiAgICB9CiAgICBlbHNlCiAgICB7CiAgICAgICAgaGV4ID0gMDsKICAgIH0KICAgIHJldHVybiBoZXg7Cn0KCnN0YXRpYyBzaXplX3QgY3JlYXRlQ2hhckFycmF5RnJvbUhleFN0cmluZyhjaGFyICpyZXN1bHRbXSwgY29uc3QgY2hhciAqc3RyKQp7CglzaXplX3QgbGVuID0gc3RybGVuKHN0cik7CglpZiAoIWxlbikgcmV0dXJuIDA7CglzaXplX3QgYnl0ZXMgPSBsZW4gLyAyOwoJaW50IG1vc3RTaWduaWZpY2FudE5pYmJsZSA9IGxlbiAlIDI7CglzaXplX3Qgc2l6ZSA9IGJ5dGVzICsgbW9zdFNpZ25pZmljYW50TmliYmxlOwoJKnJlc3VsdCA9IG1hbGxvYyhzaXplKTsKCWNoYXIgKm91dCA9ICpyZXN1bHQ7Cgljb25zdCBjaGFyICppbiA9IHN0cjsKCWlmIChtb3N0U2lnbmlmaWNhbnROaWJibGUpCgl7CgkJKm91dCsrID0gaGV4TmliYmxlKGluKyspOwoJfQoJd2hpbGUgKGJ5dGVzKQoJewoJCSpvdXQgPSBoZXhOaWJibGUoaW4rKyk7CgkJKm91dCA8PD0gNDsKCQkqb3V0KysgfD0gaGV4TmliYmxlKGluKyspOwoJCS0tYnl0ZXM7Cgl9CglyZXR1cm4gc2l6ZTsKfQoKaW50IG1haW4odm9pZCkgewogIGludCB2YWx1ZSA9IDA7CiAgY2hhciAqY29udmVydGVkOwogIAogIHNpemVfdCBjb252ZXJ0ZWRTaXplID0gY3JlYXRlQ2hhckFycmF5RnJvbUhleFN0cmluZygmY29udmVydGVkLCBidWYpOwogIAogIGZvciAoaW50IGkgPSAwOyBpIDwgY29udmVydGVkU2l6ZTsgKytpKQogIHsKICAJcHJpbnRmKCAiMHglMDJoaHhcbiIsIGNvbnZlcnRlZFtpXSk7CiAgfQogIAogIGZyZWUoY29udmVydGVkKTsKfQo=