Files
SPT-Server-Build/Core/Utils/EncodingUtil.cs
T
2025-01-08 13:41:25 +00:00

65 lines
1.8 KiB
C#

using System.Text;
using Core.Annotations;
namespace Core.Utils;
[Injectable(InjectionType.Singleton)]
public class EncodingUtil
{
public string Encode(string value, EncodeType encode)
{
return encode switch
{
EncodeType.BASE64 => Convert.ToBase64String(Encoding.Default.GetBytes(value)),
EncodeType.HEX => Convert.ToHexString(Encoding.Default.GetBytes(value)),
EncodeType.ASCII => Encoding.ASCII.GetString(Encoding.Default.GetBytes(value)),
EncodeType.UTF8 => Encoding.UTF8.GetString(Encoding.Default.GetBytes(value)),
_ => throw new ArgumentOutOfRangeException(nameof(encode), encode, null)
};
}
public string Decode(string value, EncodeType encode)
{
switch (encode)
{
case EncodeType.BASE64:
return Encoding.UTF8.GetString(Convert.FromBase64String(value));
case EncodeType.HEX:
return Encoding.UTF8.GetString(Convert.FromHexString(value));
case EncodeType.ASCII:
return Encoding.ASCII.GetString(Encoding.Default.GetBytes(value));
case EncodeType.UTF8:
return Encoding.UTF8.GetString(Encoding.Default.GetBytes(value));
default:
throw new ArgumentOutOfRangeException(nameof(encode), encode, null);
}
}
public string FromBase64(string value)
{
return Decode(value, EncodeType.BASE64);
}
public string ToBase64(string value)
{
return Encode(value, EncodeType.BASE64);
}
public string FromHex(string value)
{
return Decode(value, EncodeType.HEX);
}
public string ToHex(string value)
{
return Encode(value, EncodeType.HEX);
}
}
public enum EncodeType
{
BASE64,
HEX,
ASCII,
UTF8
}