using System.Collections.Generic;
public static class TextHelper
public static string ToUtf8HexValues(this string s)
Span<byte> span = stackalloc byte[8];
Span<char> charSpan = stackalloc char[4];
var sb = new StringBuilder();
foreach (var rune in s.EnumerateRunes())
for (int i = 0, length = rune.EncodeToUtf8(span); i < length; i++)
if (span[i].TryFormat(charSpan, out var n, "X"))
sb.Append(charSpan.Slice(0, n));
public static void Main()
Console.WriteLine($"Encoding.UTF8.GetMaxByteCount(1) = {Encoding.UTF8.GetMaxByteCount(1)}\n");
var s = "$£€𐍈".ToUtf8HexValues();
Assert.That(s == "24 C2A3 E282AC F0908D88");