Dize

2011-10-24 20 views
8

Olası Çoğalt: Böyle bir dize ettikDize


How do you convert Byte Array to Hexadecimal String, and vice versa, in C#?
Convert hex string to byte array

: "021500010000146DE6D800000000000000003801030E9738"

ben gerekenler şudur Bayt dizisi: 02 15 00 01 00 00 14 6D E6 D 8 00 00 00 00 00 00 00 00 38 01 03 0E 97 38 (her bir çift sayı, ilgili baytta onaltılı değerdir).

Bu dönüşümü nasıl yapabilirim? Teşekkürler!!

+0

ile buldum? –

+1

“Mümkün yinelenen” tamamen farklı bir sorudur. Bazı kodlamaları kullanarak dizeyi 'byte []' a nasıl kodlayacağını sormuyor. Buradaki dize, byte [] 'a dönüştürülmesi gereken onaltılık değerler içerir. – svick

+0

Bu soruların tam olarak nasıl olduğunu göremiyorum. – vcsjones

cevap

5
var arr = new byte[s.Length/2]; 
for (var i = 0 ; i<arr.Length ; i++) 
    arr[i] = (byte)Convert.ToInt32(s.SubString(i*2,2), 16); 
+0

Bu kod gerçekten çalışıyor. Ama sadece bir detay, doğru kod "s.Substring" dir. Herkese teşekkürler. – Manu

+0

ToInt32 yerine Convert.ToByte kullanabilir. – mikeazo

1

Bu ikinci örnekte bu page numaralı telefondan çok hoşlanıyorsunuz.
önemli bir parçasıdır:

Convert.ToInt32(hex, 16); 

birinci parametre heks-değeri (ör "DE") belirten, bir 2-bir karakter dizgisidir.
İkinci parametre, Hex olan Base-16'dan dönüştürmeyi belirtir.

Dizeyi iki karakterli bölümlere ayırmak örnekte gösterilmez, ancak sorununuz için gereklidir. Seninle başa çıkabilmen için yeterince basit.

Sana bir şey yapmak yazmaya mı Google: "C# parse hex"

1
string str = "021500010000146DE6D800000000000000003801030E9738"; 
    List<byte> myBytes = new List<byte>(); 

    try 
    { 
     while (!string.IsNullOrEmpty(str)) 
     { 
      myBytes.Add(Convert.ToByte(str.Substring(0, 2), 16)); 
      str = str.Substring(2); 
     } 
    } 
    catch (FormatException fe) 
    { 
     //handle error 
    } 
    for(int i = 0; i < myBytes.Count; i++) 
    { 
     Response.Write(myBytes[i].ToString() + "<br/>"); 
    } 
+0

'Convert.ToByte' bir int? Yani, erken optimizasyon kötü ve tüm, ama en basit yaklaşım da daha hızlı olduğu zaman ... –

+0

@BenVoigt Ah, Ben bir dönüşümde yapmak için doğru işlev bulundu. Teşekkürler! –