fork download
  1. using System;
  2. using System.IO;
  3. using System.Runtime.InteropServices;
  4. using System.Runtime.Serialization;
  5. using System.Runtime.Serialization.Formatters.Binary;
  6.  
  7. [StructLayout(LayoutKind.Sequential)]
  8. [Serializable]
  9. public struct Quaternion
  10. {
  11. public char[] bone0;
  12. public char[] bone1;
  13. public Int16 qw;
  14. public Int16 qx;
  15. public Int16 qy;
  16. public Int16 qz;
  17.  
  18. public override string ToString()
  19. {
  20. return $"{qw} {qx} {qy} {qz}";
  21. }
  22. }
  23.  
  24.  
  25. class Program
  26. {
  27. private static byte[] Serialize<T>(T obj)
  28. {
  29.  
  30. IFormatter formatter = new BinaryFormatter();
  31. using (MemoryStream stream = new MemoryStream())
  32. {
  33. formatter.Serialize(stream, obj);
  34. return stream.ToArray();
  35. }
  36. }
  37.  
  38. private static T Deserialize<T>(byte[] param)
  39. {
  40. using (MemoryStream ms = new MemoryStream(param))
  41. {
  42. IFormatter br = new BinaryFormatter();
  43. return (T)br.Deserialize(ms);
  44. }
  45. }
  46. static void Main(string[] args)
  47. {
  48. var bytes = Serialize(new Quaternion { qw = 1, qx = 2, qy = 3, qz = 4 });
  49. var obj = Deserialize<Quaternion>(bytes);
  50. Console.WriteLine(obj);
  51. }
  52. }
  53.  
  54.  
Success #stdin #stdout 0.02s 132672KB
stdin
Standard input is empty
stdout
1 2 3 4