Sending IR hash codes

I am using Ken Shirriff’s IR library. On the same website there is a link to using IR hash codes for remotes with unsupported protocols. The significant functions in the IR hash code example is:

// Compare two tick values, returning 0 if newval is shorter,
// 1 if newval is equal, and 2 if newval is longer
// Use a tolerance of 20%
int compare(unsigned int oldval, unsigned int newval) {
  if (newval < oldval * .8) {
    return 0;
  else if (oldval < newval * .8) {
    return 2;
  else {
    return 1;

// Use FNV hash algorithm:
#define FNV_PRIME_32 16777619
#define FNV_BASIS_32 2166136261

/* Converts the raw code values into a 32-bit hash code.
 * Hopefully this code is unique for each button.
unsigned long decodeHash(decode_results *results) {
  unsigned long hash = FNV_BASIS_32;
  for (int i = 1; i+2 < results->rawlen; i++) {
    int value =  compare(results->rawbuf[i], results->rawbuf[i+2]);
    // Add value into the hash
    hash = (hash * FNV_PRIME_32) ^ value;
  return hash;

That is the code to receive an IR signal, and convert it to a IR hash code (typically 32 bits). Is is possible to send an IR hash code, with the carrier frequency (typically 38kHz)? If yes, how would I do it?

No, you can't send hashed IR codes. They are used for recognizing received IR codes.

To send codes that are not Sony, NEC, RC5, or RC6 you have to send the RAW codes:

void sendRaw(unsigned int buf[], int len, int hz);