Paebbels / JSON-for-VHDL

A JSON library implemented in VHDL.
Other
76 stars 16 forks source link

Decoding odd-length strings #11

Open rhinton opened 2 years ago

rhinton commented 2 years ago

Function base16_decode in Encodings.pkg.vhdl fails on odd-length strings. Suggested correction:

  function base16_decode(constant str: string) return string is
    variable result: string (1 to (str'length + 1) / 2);
    variable str_i : string(1 to 2 * result'length);
  begin
    str_i := (others => ' ');
    str_i(1 to str'length) := str;
    for x in result'range loop
      result(x) := character'val(to_integer(
        to_unsigned(from_hex_string(
          str_i(2 * x - 1 to 2 * x),
          7, 0
        ), 8)
      ));
    end loop;
    return result;
  end function;
umarcor commented 2 years ago

LGTM! @rhinton, do you want to propose a PR?

/cc @Paebbels @LarsAsplund

Paebbels commented 2 years ago

I would like to see the the init value of str_i being moved into the variable declaration to keep the function body clean.


@rhinton are you a user of this library? Do you use it in synthesis or simulation (or because of VUnit?)?