diff --git a/Assets/TEngine/Runtime/Utility/ByteHelper.cs b/Assets/TEngine/Runtime/Utility/ByteHelper.cs new file mode 100644 index 00000000..35505c90 --- /dev/null +++ b/Assets/TEngine/Runtime/Utility/ByteHelper.cs @@ -0,0 +1,107 @@ +using System.Text; + +namespace TEngine +{ + public static class ByteHelper + { + public static string ToHex(this byte b) + { + return b.ToString("X2"); + } + + public static string ToHex(this byte[] bytes) + { + StringBuilder stringBuilder = new StringBuilder(); + foreach (byte b in bytes) + { + stringBuilder.Append(b.ToString("X2")); + } + + return stringBuilder.ToString(); + } + + public static string ToHex(this byte[] bytes, string format) + { + StringBuilder stringBuilder = new StringBuilder(); + foreach (byte b in bytes) + { + stringBuilder.Append(b.ToString(format)); + } + + return stringBuilder.ToString(); + } + + public static string ToHex(this byte[] bytes, int offset, int count) + { + StringBuilder stringBuilder = new StringBuilder(); + for (int i = offset; i < offset + count; ++i) + { + stringBuilder.Append(bytes[i].ToString("X2")); + } + + return stringBuilder.ToString(); + } + + public static string ToStr(this byte[] bytes) + { + return Encoding.Default.GetString(bytes); + } + + public static string ToStr(this byte[] bytes, int index, int count) + { + return Encoding.Default.GetString(bytes, index, count); + } + + public static string Utf8ToStr(this byte[] bytes) + { + return Encoding.UTF8.GetString(bytes); + } + + public static string Utf8ToStr(this byte[] bytes, int index, int count) + { + return Encoding.UTF8.GetString(bytes, index, count); + } + + public static void WriteTo(this byte[] bytes, int offset, uint num) + { + bytes[offset] = (byte)(num & 0xff); + bytes[offset + 1] = (byte)((num & 0xff00) >> 8); + bytes[offset + 2] = (byte)((num & 0xff0000) >> 16); + bytes[offset + 3] = (byte)((num & 0xff000000) >> 24); + } + + public static void WriteTo(this byte[] bytes, int offset, int num) + { + bytes[offset] = (byte)(num & 0xff); + bytes[offset + 1] = (byte)((num & 0xff00) >> 8); + bytes[offset + 2] = (byte)((num & 0xff0000) >> 16); + bytes[offset + 3] = (byte)((num & 0xff000000) >> 24); + } + + public static void WriteTo(this byte[] bytes, int offset, byte num) + { + bytes[offset] = num; + } + + public static void WriteTo(this byte[] bytes, int offset, short num) + { + bytes[offset] = (byte)(num & 0xff); + bytes[offset + 1] = (byte)((num & 0xff00) >> 8); + } + + public static void WriteTo(this byte[] bytes, int offset, ushort num) + { + bytes[offset] = (byte)(num & 0xff); + bytes[offset + 1] = (byte)((num & 0xff00) >> 8); + } + + public static unsafe void WriteTo(this byte[] bytes, int offset, long num) + { + byte* bPoint = (byte*)# + for (int i = 0; i < sizeof(long); ++i) + { + bytes[offset + i] = bPoint[i]; + } + } + } +} \ No newline at end of file diff --git a/Assets/TEngine/Runtime/Utility/ByteHelper.cs.meta b/Assets/TEngine/Runtime/Utility/ByteHelper.cs.meta new file mode 100644 index 00000000..6de651c7 --- /dev/null +++ b/Assets/TEngine/Runtime/Utility/ByteHelper.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: c577d22a071e44c6bf0c2a0ed5964fbe +timeCreated: 1682418991 \ No newline at end of file