To go even further, how much is it different from C# or C++? There you'd just declare the appropriate structs and bitcast.
https://learn.microsoft.com/en-us/dotnet/csharp/language-ref...
Also not sure what does it have to do with defined/undefined behavior. Even if it is not verifiable, the behavior is still defined.