将HEX字符串转换为c#中的实际字符串值

时间:2013-11-27 12:24:56

标签: c# string encoding hex esri

有一个第三方代码,它以byte []数组的形式返回字符串“Nmimtech1”。

    object password1 = pProps.GetProperty("PASSWORD"); 

(其第三方ESRI库代码,所以不要打扰) 现在我将其转换为byte []

    byte[] pswrdbyte = password1 as byte[]

此字节数组的内容为

        [0] 2   byte
    [1] 0   byte
    [2] 0   byte
    [3] 0   byte
    [4] 20  byte
    [5] 0   byte
    [6] 0   byte
    [7] 0   byte
    [8] 200 byte
    [9] 115 byte
    [10]    39  byte
    [11]    180 byte
    [12]    150 byte
    [13]    100 byte
    [14]    74  byte
    [15]    44  byte
    [16]    7   byte
    [17]    215 byte
    [18]    137 byte
    [19]    50  byte
    [20]    212 byte
    [21]    138 byte
    [22]    56  byte
    [23]    241 byte
    [24]    134 byte
    [25]    51  byte
    [26]    75  byte
    [27]    0   byte

现在我已经尝试了各种方法将其转换回“Nmimtech1

    string str = System.Text.Encoding.ASCII.GetString(pswrdbyte);

返回“\ 0 \ 0 \ 0 \ 0 \ 0 \ 0?s'?? dJ,\ a ?? 2 ?? 8 ?? 3K \ 0”

    string str1 = System.Text.Encoding.Unicode.GetString(pswrdbyte);

返回“\ 0 \ 0珈됧撖ⱊ휇㊉㎆"K”

    string str2 = System.Text.Encoding.UTF8.GetString(pswrdbyte);

返回“\ 0 \ 0 \ 0 \ 0 \ 0 \0 s' dJ,\a׉2Ԋ8 3K\ 0”

    string str3 =  System.Text.Encoding.UTF32.GetString(pswrdbyte);

返回“ ”

    string str4 = System.Text.Encoding.UTF7.GetString(pswrdbyte);

返回“\ 0 \ 0 \ 0 \ 0 \ 0 \0Ès''dJ,\ a×2Ô8ñ3K\ 0”

    string str5 = System.Text.Encoding.BigEndianUnicode.GetString(pswrdbyte);

返回“Ȁ\ 0᐀\ 0졳➴除䨬ߗ裤풊㣱蘳䬀”

    string str6 = pswrdbyte.ToString();

返回“System.Byte []”(奇怪)

    string s  = BitConverter.ToString(pswrdbyte);

返回“02-00-00-00-14-00-00-00-C8-73-27-B4-96-64-4A-2C-07-D7-89-32-D4-8A-38 -F1-86-33-4B-00" 。现在这有点意义,但是你能告诉我如何以编程方式将这个十六进制字符串转换回“Nmimtech1”吗?

2 个答案:

答案 0 :(得分:0)

如果您的第三方代码以字节数组的形式返回您的字符串,为什么再次将其转换为字节数组?

  

现在我把它转换为byte []:byte [] pswrdbyte = password1 as byte []

        String password1 = "Nmimtech1";
        System.Text.ASCIIEncoding enc = new System.Text.ASCIIEncoding();

        byte[] pswrdbyte = enc.GetBytes(password1);

enter image description here

        string password2 = enc.GetString(pswrdbyte);

password2再次包含“Nmimtech1”。

答案 1 :(得分:0)

对不起伙计们,从Thirdparty代码返回的密码是加密的,我想我们不能解密它。相反,要在本地存储它,我将需要存储加密的表单。 感谢