python代码:'00000000'.decode('hex') 请问上面这条python代码如何在C#中实现?

时间:2021-01-14 18:12:17
python代码:'00000000'.decode('hex') 请问上面这条python代码如何在C#中实现?

能帮忙给个例程吗?

9 个解决方案

#1


int.Parse("00000000", NumberStyles.HexNumber);

#2


引用 1 楼 shingoscar 的回复:
int.Parse("00000000", NumberStyles.HexNumber);


谢谢前辈,但是这个000000是16进制的值,如果换成
int.Parse("EB64A98AB180C035A620F0979C29E304", NumberStyles.HexNumber);


他是会说太大了的。

就是说这个00000000部分是16进制的该如何去做?

#3


'EB64A98AB180C035A620F0979C29E304'.decode('hex') 


就是这样的用int.Parse好像不可以、

#4



            string s1 = Regex.Replace("EB64A98AB180C035A620F0979C29E304", @".{2}(?!$)", "$0-");
            string s = "";
            string[] keys = s1.Split('-');//读取用空格分成的16进制码        
            foreach (string key in keys)
            {
                int code = int.Parse(key, NumberStyles.HexNumber);
                //int code = Convert.ToInt32(key, 16);
                char c = (char)code;
                s += c.ToString();               
            }
           Console.WriteLine(s)

这个结果和
	
'EB64A98AB180C035A620F0979C29E304'.decode('hex') 
还是不一样啊

#5


引用 4 楼 sice5921 的回复:

            string s1 = Regex.Replace("EB64A98AB180C035A620F0979C29E304", @".{2}(?!$)", "$0-");
            string s = "";
            string[] keys = s1.Split('-');//读取用空格分成的16进制码        
            foreach (string key in keys)
            {
                int code = int.Parse(key, NumberStyles.HexNumber);
                //int code = Convert.ToInt32(key, 16);
                char c = (char)code;
                s += c.ToString();               
            }
           Console.WriteLine(s)

这个结果和
	
'EB64A98AB180C035A620F0979C29E304'.decode('hex') 
还是不一样啊


改了一下

string s1 = Regex.Replace("EB64A98AB180C035A620F0979C29E304", @".{2}(?!$)", "$0-");
string[] keys = s1.Split('-');//读取用空格分成的16进制码   
var buff = new byte[keys.Length];
for (int i = 0; i < keys.Length; i++) {

byte code = byte.Parse(keys[i], System.Globalization.NumberStyles.HexNumber);
buff[i] = code;
}
Console.WriteLine(System.Text.Encoding.Default.GetString(buff));


其中最后一行的Encoding要根据你使用的编码格式而定
比如UTF8 ASCII之类

#6


Encoding.UTF8.GetString(
Regex.Matches("EB64A98AB180C035A620F0979C29E304", "..")
.Cast<Match>()
.Select(m => byte.Parse(m.Value, NumberStyles.HexNumber))
.ToArray()
);

UTF8根据你原始数据是什么编码的自己替换

#7


引用 5 楼 stherix 的回复:
改了一下

string s1 = Regex.Replace("EB64A98AB180C035A620F0979C29E304", @".{2}(?!$)", "$0-");
string[] keys = s1.Split('-');//读取用空格分成的16进制码   
var buff = new byte[keys.Length];
for (int i = 0; i < keys.Length; i++) {

byte code = byte.Parse(keys[i], System.Globalization.NumberStyles.HexNumber);
buff[i] = code;
}
Console.WriteLine(System.Text.Encoding.Default.GetString(buff));


其中最后一行的Encoding要根据你使用的编码格式而定
比如UTF8 ASCII之类


引用 5 楼 stherix 的回复:
Quote: 引用 4 楼 sice5921 的回复:


            string s1 = Regex.Replace("EB64A98AB180C035A620F0979C29E304", @".{2}(?!$)", "$0-");
            string s = "";
            string[] keys = s1.Split('-');//读取用空格分成的16进制码        
            foreach (string key in keys)
            {
                int code = int.Parse(key, NumberStyles.HexNumber);
                //int code = Convert.ToInt32(key, 16);
                char c = (char)code;
                s += c.ToString();               
            }
           Console.WriteLine(s)

这个结果和
	
'EB64A98AB180C035A620F0979C29E304'.decode('hex') 
还是不一样啊


改了一下

string s1 = Regex.Replace("EB64A98AB180C035A620F0979C29E304", @".{2}(?!$)", "$0-");
string[] keys = s1.Split('-');//读取用空格分成的16进制码   
var buff = new byte[keys.Length];
for (int i = 0; i < keys.Length; i++) {

byte code = byte.Parse(keys[i], System.Globalization.NumberStyles.HexNumber);
buff[i] = code;
}
Console.WriteLine(System.Text.Encoding.Default.GetString(buff));


其中最后一行的Encoding要根据你使用的编码格式而定
比如UTF8 ASCII之类



非常感谢您的回复。。

c#输出是: python代码:'00000000'.decode('hex') 请问上面这条python代码如何在C#中实现?
py输出是: python代码:'00000000'.decode('hex') 请问上面这条python代码如何在C#中实现?

C#中间为什么多了些???

#8


引用 7 楼 sice5921 的回复:
Quote: 引用 5 楼 stherix 的回复:

改了一下

string s1 = Regex.Replace("EB64A98AB180C035A620F0979C29E304", @".{2}(?!$)", "$0-");
string[] keys = s1.Split('-');//读取用空格分成的16进制码   
var buff = new byte[keys.Length];
for (int i = 0; i < keys.Length; i++) {

byte code = byte.Parse(keys[i], System.Globalization.NumberStyles.HexNumber);
buff[i] = code;
}
Console.WriteLine(System.Text.Encoding.Default.GetString(buff));


其中最后一行的Encoding要根据你使用的编码格式而定
比如UTF8 ASCII之类


引用 5 楼 stherix 的回复:
Quote: 引用 4 楼 sice5921 的回复:


            string s1 = Regex.Replace("EB64A98AB180C035A620F0979C29E304", @".{2}(?!$)", "$0-");
            string s = "";
            string[] keys = s1.Split('-');//读取用空格分成的16进制码        
            foreach (string key in keys)
            {
                int code = int.Parse(key, NumberStyles.HexNumber);
                //int code = Convert.ToInt32(key, 16);
                char c = (char)code;
                s += c.ToString();               
            }
           Console.WriteLine(s)

这个结果和
	
'EB64A98AB180C035A620F0979C29E304'.decode('hex') 
还是不一样啊


改了一下

string s1 = Regex.Replace("EB64A98AB180C035A620F0979C29E304", @".{2}(?!$)", "$0-");
string[] keys = s1.Split('-');//读取用空格分成的16进制码   
var buff = new byte[keys.Length];
for (int i = 0; i < keys.Length; i++) {

byte code = byte.Parse(keys[i], System.Globalization.NumberStyles.HexNumber);
buff[i] = code;
}
Console.WriteLine(System.Text.Encoding.Default.GetString(buff));


其中最后一行的Encoding要根据你使用的编码格式而定
比如UTF8 ASCII之类



非常感谢您的回复。。

c#输出是: python代码:'00000000'.decode('hex') 请问上面这条python代码如何在C#中实现?
py输出是: python代码:'00000000'.decode('hex') 请问上面这条python代码如何在C#中实现?

C#中间为什么多了些???


那些问号是编码内无法转换的字符

c#就用?代替
而python就用空格来代替

出现这种情况 肯定是编码不正确 或者原文本本来就不是可显示的字符串

#9


非常感谢两位前辈,8楼已经将问题全部解决。

#1


int.Parse("00000000", NumberStyles.HexNumber);

#2


引用 1 楼 shingoscar 的回复:
int.Parse("00000000", NumberStyles.HexNumber);


谢谢前辈,但是这个000000是16进制的值,如果换成
int.Parse("EB64A98AB180C035A620F0979C29E304", NumberStyles.HexNumber);


他是会说太大了的。

就是说这个00000000部分是16进制的该如何去做?

#3


'EB64A98AB180C035A620F0979C29E304'.decode('hex') 


就是这样的用int.Parse好像不可以、

#4



            string s1 = Regex.Replace("EB64A98AB180C035A620F0979C29E304", @".{2}(?!$)", "$0-");
            string s = "";
            string[] keys = s1.Split('-');//读取用空格分成的16进制码        
            foreach (string key in keys)
            {
                int code = int.Parse(key, NumberStyles.HexNumber);
                //int code = Convert.ToInt32(key, 16);
                char c = (char)code;
                s += c.ToString();               
            }
           Console.WriteLine(s)

这个结果和
	
'EB64A98AB180C035A620F0979C29E304'.decode('hex') 
还是不一样啊

#5


引用 4 楼 sice5921 的回复:

            string s1 = Regex.Replace("EB64A98AB180C035A620F0979C29E304", @".{2}(?!$)", "$0-");
            string s = "";
            string[] keys = s1.Split('-');//读取用空格分成的16进制码        
            foreach (string key in keys)
            {
                int code = int.Parse(key, NumberStyles.HexNumber);
                //int code = Convert.ToInt32(key, 16);
                char c = (char)code;
                s += c.ToString();               
            }
           Console.WriteLine(s)

这个结果和
	
'EB64A98AB180C035A620F0979C29E304'.decode('hex') 
还是不一样啊


改了一下

string s1 = Regex.Replace("EB64A98AB180C035A620F0979C29E304", @".{2}(?!$)", "$0-");
string[] keys = s1.Split('-');//读取用空格分成的16进制码   
var buff = new byte[keys.Length];
for (int i = 0; i < keys.Length; i++) {

byte code = byte.Parse(keys[i], System.Globalization.NumberStyles.HexNumber);
buff[i] = code;
}
Console.WriteLine(System.Text.Encoding.Default.GetString(buff));


其中最后一行的Encoding要根据你使用的编码格式而定
比如UTF8 ASCII之类

#6


Encoding.UTF8.GetString(
Regex.Matches("EB64A98AB180C035A620F0979C29E304", "..")
.Cast<Match>()
.Select(m => byte.Parse(m.Value, NumberStyles.HexNumber))
.ToArray()
);

UTF8根据你原始数据是什么编码的自己替换

#7


引用 5 楼 stherix 的回复:
改了一下

string s1 = Regex.Replace("EB64A98AB180C035A620F0979C29E304", @".{2}(?!$)", "$0-");
string[] keys = s1.Split('-');//读取用空格分成的16进制码   
var buff = new byte[keys.Length];
for (int i = 0; i < keys.Length; i++) {

byte code = byte.Parse(keys[i], System.Globalization.NumberStyles.HexNumber);
buff[i] = code;
}
Console.WriteLine(System.Text.Encoding.Default.GetString(buff));


其中最后一行的Encoding要根据你使用的编码格式而定
比如UTF8 ASCII之类


引用 5 楼 stherix 的回复:
Quote: 引用 4 楼 sice5921 的回复:


            string s1 = Regex.Replace("EB64A98AB180C035A620F0979C29E304", @".{2}(?!$)", "$0-");
            string s = "";
            string[] keys = s1.Split('-');//读取用空格分成的16进制码        
            foreach (string key in keys)
            {
                int code = int.Parse(key, NumberStyles.HexNumber);
                //int code = Convert.ToInt32(key, 16);
                char c = (char)code;
                s += c.ToString();               
            }
           Console.WriteLine(s)

这个结果和
	
'EB64A98AB180C035A620F0979C29E304'.decode('hex') 
还是不一样啊


改了一下

string s1 = Regex.Replace("EB64A98AB180C035A620F0979C29E304", @".{2}(?!$)", "$0-");
string[] keys = s1.Split('-');//读取用空格分成的16进制码   
var buff = new byte[keys.Length];
for (int i = 0; i < keys.Length; i++) {

byte code = byte.Parse(keys[i], System.Globalization.NumberStyles.HexNumber);
buff[i] = code;
}
Console.WriteLine(System.Text.Encoding.Default.GetString(buff));


其中最后一行的Encoding要根据你使用的编码格式而定
比如UTF8 ASCII之类



非常感谢您的回复。。

c#输出是: python代码:'00000000'.decode('hex') 请问上面这条python代码如何在C#中实现?
py输出是: python代码:'00000000'.decode('hex') 请问上面这条python代码如何在C#中实现?

C#中间为什么多了些???

#8


引用 7 楼 sice5921 的回复:
Quote: 引用 5 楼 stherix 的回复:

改了一下

string s1 = Regex.Replace("EB64A98AB180C035A620F0979C29E304", @".{2}(?!$)", "$0-");
string[] keys = s1.Split('-');//读取用空格分成的16进制码   
var buff = new byte[keys.Length];
for (int i = 0; i < keys.Length; i++) {

byte code = byte.Parse(keys[i], System.Globalization.NumberStyles.HexNumber);
buff[i] = code;
}
Console.WriteLine(System.Text.Encoding.Default.GetString(buff));


其中最后一行的Encoding要根据你使用的编码格式而定
比如UTF8 ASCII之类


引用 5 楼 stherix 的回复:
Quote: 引用 4 楼 sice5921 的回复:


            string s1 = Regex.Replace("EB64A98AB180C035A620F0979C29E304", @".{2}(?!$)", "$0-");
            string s = "";
            string[] keys = s1.Split('-');//读取用空格分成的16进制码        
            foreach (string key in keys)
            {
                int code = int.Parse(key, NumberStyles.HexNumber);
                //int code = Convert.ToInt32(key, 16);
                char c = (char)code;
                s += c.ToString();               
            }
           Console.WriteLine(s)

这个结果和
	
'EB64A98AB180C035A620F0979C29E304'.decode('hex') 
还是不一样啊


改了一下

string s1 = Regex.Replace("EB64A98AB180C035A620F0979C29E304", @".{2}(?!$)", "$0-");
string[] keys = s1.Split('-');//读取用空格分成的16进制码   
var buff = new byte[keys.Length];
for (int i = 0; i < keys.Length; i++) {

byte code = byte.Parse(keys[i], System.Globalization.NumberStyles.HexNumber);
buff[i] = code;
}
Console.WriteLine(System.Text.Encoding.Default.GetString(buff));


其中最后一行的Encoding要根据你使用的编码格式而定
比如UTF8 ASCII之类



非常感谢您的回复。。

c#输出是: python代码:'00000000'.decode('hex') 请问上面这条python代码如何在C#中实现?
py输出是: python代码:'00000000'.decode('hex') 请问上面这条python代码如何在C#中实现?

C#中间为什么多了些???


那些问号是编码内无法转换的字符

c#就用?代替
而python就用空格来代替

出现这种情况 肯定是编码不正确 或者原文本本来就不是可显示的字符串

#9


非常感谢两位前辈,8楼已经将问题全部解决。