Используя xsl 2.0, как бы вы преобразовали значение xs: float в шестнадцатеричное представление его двоичного значения? у меня нет проблем сделать это для целого числа (разделить на 16 рекурсивно и объединить символы 0-9A-F), но float / double ставит меня в тупик.
<xsl:function name="my:float-to-hex" as="xs:string">
<xsl:param name="in" as="xs:float"/>
<xsl:sequence select="magic-here($in)"/>
</xsl:function>
Допустимым ответом может быть то, что «это невозможно», и это было бы полезно для меня, если бы это было правдой. Я открыт для других предложений, но, пожалуйста, не отходите от XSL. Я полностью осознаю, что есть несколько способов снять шкуру с этой кошки.
Чтобы уточнить, ожидаемый результат будет таким же, как выход из этого кода C:
float f = 28.25f;
char *ptr = &f;
for(int i = 0; i < sizeof(float); i++) { printf("%02X", *(ptr + i)); }
стороннее редактирование