C# 是否有相当于 Python 的 unhexlify 的方法?
可能的重复:
如何将十六进制转换为字节数组?
我是在 C# 中搜索 python 兼容方法将十六进制转换为二进制。我通过这样做反转了 Python 中的哈希:
import sha
import base64
import binascii
hexvalue = "5baa61e4c9b93f3f0682250b6cf8331b7ee68fd8"
binaryval = binascii.unhexlify(hexvalue)
print base64.standard_b64encode(binaryval)
>> W6ph5Mm5Pz8GgiULbPgzG37mj9g=
到目前为止,我发现的所有各种 Hex2Binary C# 方法最终都会抛出 OverflowExceptions:
static string Hex2Binary(string hexvalue)
{
string binaryval = "";
long b = Convert.ToInt64(hexvalue, 16);
binaryval = Convert.ToString(b);
byte[] bytes = Encoding.UTF8.GetBytes(binaryval);
return Convert.ToBase64String(bytes);
}
有人知道如何生成 C# 方法来匹配 python 输出吗?
Possible Duplicate:
How to convert hex to a byte array?
I'm searching for a python compatible method in C# to convert hex to binary. I've reversed a hash in Python by doing this:
import sha
import base64
import binascii
hexvalue = "5baa61e4c9b93f3f0682250b6cf8331b7ee68fd8"
binaryval = binascii.unhexlify(hexvalue)
print base64.standard_b64encode(binaryval)
>> W6ph5Mm5Pz8GgiULbPgzG37mj9g=
So far all of the various Hex2Binary C# methods I've found end up throwing OverflowExceptions:
static string Hex2Binary(string hexvalue)
{
string binaryval = "";
long b = Convert.ToInt64(hexvalue, 16);
binaryval = Convert.ToString(b);
byte[] bytes = Encoding.UTF8.GetBytes(binaryval);
return Convert.ToBase64String(bytes);
}
Anybody got a tip on how to produce a C# method to match the python output?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
该值对于 long(64 位)来说太大,这就是您收到 OverflowException 的原因。
但是将十六进制逐字节转换为二进制非常容易(实际上是半字节半字节):
编辑:上面的方法转换为二进制,而不是base64。这个转换为 base64 :
This value is too big for a long (64bits), that's why you get an OverflowException.
But it's very easy to convert hex to binary byte by byte (well, nibble by nibble actually) :
EDIT: the method above converts to binary, not to base64. This one converts to base64 :
您可以将十六进制字符串分为两位数组,然后使用 byte.parse 将它们转换为字节。为此,请使用 NumberStyles.AllowHexSpecifier:
以下例程将十六进制字符串转换为字节数组:
You can divide your hexadecimal string into two-digit groups, and then use byte.parse to convert them to bytes. Use the NumberStyles.AllowHexSpecifier for that, for example:
The following routine will convert a hex string to a byte array: