Saya mencoba mengonversi nilai unHex menjadi string tetapi tidak berhasil.

Saya memiliki nilai berikut 0x01BB92E7F716F55B144768FCB2EA40187AE6CF6B2E52A64F7331D0539507441F7D770112510D679F0B310116B0D709E049A19467672FFA532A7C30DFB72

Hasil yang saya harap akan menjadi ini

enter image description here

Tetapi menjalankan fungsi di bawah ini menampilkan hasil ini

»’ Ç ÷ õ [Ghü²ê @ zæÏk.R¦Os1ÐS • D} w Q gŸ 1 ° × àI¡ ”gg / úS * | 0ß ·) = ¤

Adakah ide bagaimana saya dapat mengekstrak informasi seperti yang diharapkan

public static string Hex2String (string input)
{
    var builder = new StringBuilder ();
    for (int i = 0; i < socketLength; i + = 2)
    {
        // throws an exception if not properly formatted
        string hexdec = input.Substring (i, 2);
        int number = Int32.Parse (hexdec, NumberStyles.HexNumber);
        char charToAdd = (char) number;
        builder.Append (charToAdd);
    }
    return builder.ToString ();
}

c#
-1
user3661384 28 Mei 2021, 18:00

1 menjawab

Jawaban Terbaik

Hasil Anda dikodekan base64. Base64 adalah cara mengambil larik byte dan mengubahnya menjadi karakter yang dapat dibaca manusia.

Kode Anda mencoba mengambil byte mentah ini dan melemparkannya ke karakter, tetapi tidak semua nilai byte adalah karakter yang dapat dicetak yang valid: beberapa adalah karakter kontrol, beberapa tidak dapat dicetak, dll.

Sebagai gantinya, mari kita ubah string hex menjadi array byte, lalu ubah array byte itu menjadi string base64.

string input = "01BB92E7F716F55B144768FCB2EA40187AE6CF6B2E52A64F7331D0539507441F7D770112510D679F0B310116B0D709E049A19467672FFA532A7C30DFB72";
byte[] bytes = new byte[input.Length / 2];

for (int i = 0; i < bytes.Length; i++)
{
    bytes[i] = byte.Parse(input.Substring(i * 2, 2), NumberStyles.HexNumber);
}

string result = Convert.ToBase64String(bytes);

Ini menghasilkan:

AbuS5/cW9VsUR2j8supAGHrmz2suUqZPczHQU5UHRB99dwESUQ1nnwsxARaw1wngSaGUZ2cv+lMqfDDftw==

Lihat itu berjalan di sini.

6
canton7 28 Mei 2021, 16:12