Java中Hex.decodeHex()方法对应的C#等效实现是什么?
Java
Hex.decodeHex()的C#等效实现 方案1:.NET 5+ / .NET Core 2.1+ 直接使用内置方法(推荐)
高版本.NET框架已经内置了功能完全一致的API,直接调用即可:
string Key = "7777777777777777777777777777777777777777777777777777777777777777"; byte[] KeyInBytes = Convert.FromHexString(Key);
方案2:低版本.NET(如.NET Framework)自定义实现
如果使用的框架没有内置Convert.FromHexString方法,可以自己实现等效的解码逻辑:
// 自定义十六进制解码方法,和Java Hex.decodeHex行为完全一致 public static byte[] DecodeHex(string hexString) { if (hexString.Length % 2 != 0) { throw new ArgumentException("十六进制字符串长度必须为偶数", nameof(hexString)); } byte[] result = new byte[hexString.Length / 2]; for (int i = 0; i < hexString.Length; i += 2) { result[i / 2] = Convert.ToByte(hexString.Substring(i, 2), 16); } return result; }
调用示例:
string Key = "7777777777777777777777777777777777777777777777777777777777777777"; byte[] KeyInBytes = DecodeHex(Key);
兼容说明
以上两种实现均完全对齐JavaHex.decodeHex的行为:
- 同时支持大写、小写格式的十六进制字符输入
- 输入字符串长度为奇数时会抛出参数异常
- 输入包含非十六进制合法字符时会抛出格式异常
内容的提问来源于stack exchange,提问作者user13150875
相关产品推荐
相关产品推荐

