【问题标题】:How do you convert a operation and byte array to a hexadecimal string?如何将操作和字节数组转换为十六进制字符串?
【发布时间】:2023-01-17 18:31:42
【问题描述】:

我尝试反转该代码。

var val =FormatFingerOp(BitConverter.ToString(Convert.FromBase64String("EcE4Zodu3wRTBXntCdUvifj+/GggA3DnG6zEKRZGpcY=")));

FormatFingerOp 做那件事:

var fp = "";
            string[] keys = val.Split('-');
            for (int i = 1; i <= keys.Length; i++)
            {
                fp += keys[i - 1];
                if (i % 2 == 0)
                    fp += " ";
            }

我试过了,但没用。 我尝试像这样扭转这些步骤:

 string xsonuc = "";

            for (int i = 1; i <= fp.Length; i++)
            {
                xsonuc += fp[i - 1];
                if (i % 2 == 0)
                    xsonuc += "-";
            }


            int NumberChars = val.Length;
            byte[] ysonuc = new byte[NumberChars / 2];
            for (int i = 0; i < NumberChars; i += 2)
                ysonuc[i / 2] = Convert.ToByte(val.Substring(i, 2), 16);

【问题讨论】:

    标签: c#


    【解决方案1】:

    我认为在一般情况下这是不可逆的,FormatFingerOp 会将成对的密钥连接成一个条目,即 "one-three" 将变为 "onethree" 所以如果你没有任何关于密钥结构的先验知识(比如固定长度或其他东西) - 你无法扭转它。

    至于你的代码 - 请注意FormatFingerOp 迭代字符串数组,而你似乎正在尝试迭代字符串本身(对于初学者你需要“反转”新分隔符" "- 所以fp.Split(" "))。

    【讨论】:

    • 它的标准是这样的 11A1 3864 876E DZ04 5305 79ED 09D5 2F89 F8FE FC68 2003 70E7 1BAC C429 1646 A5C6
    • @ZeynepAydemir 你有原始字符串吗?
    • "EcE4Zodu3wRTBXntCdUvifj+/GggA3DnG6zEKRZGpcY="
    • 我只想将“11A1 3864 876E DZ04 5305 79ED 09D5 2F89 F8FE FC68 2003 70E7 1BAC C429 1646 A5C6”转换为“EcE4Zodu3wRTBXntCdUvifj+/GggA3DnG6zEKRZGpcY=”
    • @ZeynepAydemir 字符串中不应有DZ04
    猜你喜欢
    • 2017-08-23
    • 2019-07-27
    • 2015-09-21
    • 1970-01-01
    • 2021-10-31
    • 2019-02-12
    相关资源
    最近更新 更多