Onaltılıyı VB.NET numaralı bir ondalığa dönüştürmem gerekiyor. C# içinde birkaç örnek buldum, ama VB.NET'e dönüştürmeye çalıştığımda başarılı olamadım. Dönüştürmeye çalıştığım onaltılık bir sayı örneği "A14152464C203230304232323020572F544947455234352E" dir.VB.NET kullanarak onaltılıyı onluk olarak nasıl çevirirsiniz?
cevap
Bu, 24 baytlık (192 bit) bir sayıdır; Hangi değeri bekliyorsunuz? Burada aşınmış bir sürü iş yapmak Convert
kullanabilirsiniz
Not - (C#) örneğin:
bir numarayaraw
aldığım Nasıl
string hex = "A14152464C203230304232323020572F544947455234352E";
byte[] raw = new byte[hex.Length/2];
for (int i = 0; i < raw.Length ; i++)
{
raw[i] = Convert.ToByte(hex.Substring(i * 2,2), 16);
}
numara olduğunu düşünüyorum ne olduğuna bağlıdır .NET Reflector arasında ...
Visual Basic çeviri nezaket ("-1" tuhaf görünüyor olsa da):
Dim hex As String = "A14152464C203230304232323020572F544947455234352E"
Dim raw As Byte() = New Byte((hex.Length/2) - 1) {}
Dim i As Integer
For i = 0 To raw.Length - 1
raw(i) = Convert.ToByte(hex.Substring((i * 2), 2), &H10)
Next i
(Ben sorunuza yeniden yorum ekledi dikkat edin). Lockhead Martin bu verileri göndermeye başladı ve belgeleri bitirmediler. Bu zamanda bir keşif modundayız. Sayısal değeri almak için Raw (i) değerlerini toplamalı mıyım? – user38349
Hayır; Bu kötü olurdu ... sorun: 192 bit ile ne yapmalı?Bu 3 uzun (Int64), 6 inç (Int32), 2 ondalık, bir BigInteger, vb olabilir ... ama büyük endian, küçük endian, vs ... ikili ihtiyaçlarını çözme bir * küçük * bilgi bit kaynak hakkında. –
-1 doğru, VB dizi bildirimi sözdizimi dizinin üst sınırını verirken C# dizisindeki öğe sayısını verir. Dizi sıfır olduğundan, üst sınır, öğelerin sayısından bir tanesidir. – MarkJ
Kendiniz yazın.
Dizgiyi belirtmeniz, sonra sağdan başlamanız ve yolunuzu sola döndürmeniz gerekir.
int weight = 1;
While Looping
{
If (token(i) == "F") { DecimalValue += 15 * weight; }
If (token(i) == "E") { DecimalValue += 14 * weight; }
If (token(i) == "D") { DecimalValue += 13 * weight; }
If (token(i) == "C") { DecimalValue += 12 * weight; }
If (token(i) == "B") { DecimalValue += 11 * weight; }
If (token(i) == "A") { DecimalValue += 10 * weight; }
else { DecimalValue += token(i) * weight; }
weight = weight * 16;
}
Bunun gibi birşey.
Dim hex As String
hex = "A14152464C203230304232323020572F544947455234352E"
Dim dec As Long
Dim hexpart As String
For x As Integer = 1 To (hex.Length/2)
hexpart = hex.Substring((x * 2) - 2, 2)
dec = Int32.Parse(hexpart, System.Globalization.NumberStyles.HexNumber)
Debug.Print("Hex = " + hex + ",HexPart = " + hexpart + ", Dec = " + dec.ToString + Environment.NewLine)
Next
Bu Ondalığa için çalışmaz ve Hex tamsayı için çok uzun ... ama fikir olsun. Onu ayırabilir ve yeniden birleştirebilirsiniz.
Hex = A14152464C203230304232323020572F544947455234352E,HexPart = A1, Dec = 161
Hex = A14152464C203230304232323020572F544947455234352E,HexPart = 41, Dec = 65
Hex = A14152464C203230304232323020572F544947455234352E,HexPart = 52, Dec = 82
Hex = A14152464C203230304232323020572F544947455234352E,HexPart = 46, Dec = 70
Hex = A14152464C203230304232323020572F544947455234352E,HexPart = 4C, Dec = 76
Hex = A14152464C203230304232323020572F544947455234352E,HexPart = 20, Dec = 32
Hex = A14152464C203230304232323020572F544947455234352E,HexPart = 32, Dec = 50
Hex = A14152464C203230304232323020572F544947455234352E,HexPart = 30, Dec = 48
Hex = A14152464C203230304232323020572F544947455234352E,HexPart = 30, Dec = 48
Hex = A14152464C203230304232323020572F544947455234352E,HexPart = 42, Dec = 66
Hex = A14152464C203230304232323020572F544947455234352E,HexPart = 32, Dec = 50
Hex = A14152464C203230304232323020572F544947455234352E,HexPart = 32, Dec = 50
Hex = A14152464C203230304232323020572F544947455234352E,HexPart = 30, Dec = 48
Hex = A14152464C203230304232323020572F544947455234352E,HexPart = 20, Dec = 32
Hex = A14152464C203230304232323020572F544947455234352E,HexPart = 57, Dec = 87
Hex = A14152464C203230304232323020572F544947455234352E,HexPart = 2F, Dec = 47
Hex = A14152464C203230304232323020572F544947455234352E,HexPart = 54, Dec = 84
Hex = A14152464C203230304232323020572F544947455234352E,HexPart = 49, Dec = 73
Hex = A14152464C203230304232323020572F544947455234352E,HexPart = 47, Dec = 71
Bu s dönüştürür bayt bir diziye tring: Aslında çalışmak için bir bignum sınıfını gerektirmeyen onaltılık değerleri için
Dim hex As String = "A14152464C203230304232323020572F544947455234352E"
Dim len As Integer = hex.Length \ 2
Dim data(len - 1) As Byte
For i As Integer = 0 to len - 1
data(i) = Convert.ToByte(hex.Substring(i * 2, 2), 16)
Next
Private Function toByte(ByVal Shex As String) As List(Of Byte)
Const cvtCH As Integer = 2
Dim retval As New List(Of Byte)
Dim rmndr As Integer
rmndr = Shex.Length Mod cvtCH
If rmndr <> 0 Then Shex = Shex.PadLeft(Shex.Length + cvtCH - rmndr, "0"c)
For x As Integer = 0 To Shex.Length - 1 Step cvtCH
retval.Add(Convert.ToByte(Shex.Substring(x, cvtCH), 16))
Next
Return retval
End Function
Private Function toU32(ByVal Shex As String) As List(Of UInt32)
Const cvtCH As Integer = 8
Dim retval As New List(Of UInt32)
Dim rmndr As Integer
rmndr = Shex.Length Mod cvtCH
If rmndr <> 0 Then Shex = Shex.PadLeft(Shex.Length + cvtCH - rmndr, "0"c)
For x As Integer = 0 To Shex.Length - 1 Step cvtCH
retval.Add(Convert.ToUInt32(Shex.Substring(x, cvtCH), 16))
Next
Return retval
End Function
Private Function toU64(ByVal Shex As String) As List(Of UInt64)
Const cvtCH As Integer = 16
Dim retval As New List(Of UInt64)
Dim rmndr As Integer
rmndr = Shex.Length Mod cvtCH
If rmndr <> 0 Then Shex = Shex.PadLeft(Shex.Length + cvtCH - rmndr, "0"c)
For x As Integer = 0 To Shex.Length - 1 Step cvtCH
retval.Add(Convert.ToUInt64(Shex.Substring(x, cvtCH), 16))
Next
Return retval
End Function
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
'unsigned 32 bit max = FFFFFFFF
'unsigned 64 bit max = FFFFFFFF
'signed 32 bit max = 7FFFFFFF
'signed 64 bit max = 7FFFFFFF
Dim hexS As String = "A14152464C203230304232323020572F544947455234352E"
Dim hexS2 As String = "A14152464C203230304232323020572F54494745523435"
toByte(hexS)
toU32(hexS)
toU64(hexS)
End Sub
, normal dönüştürme işlevini kullanın ama "& H" sayısını önek. VB, "& H" ifadesini, metinde olduğu gibi "bu bir onaltılık sayıdır" şeklinde yorumlar.
dim n = Cint("&H" & text)
Bir onluk değerine onaltılık değerini dönüştürmek için Visual Basic Val
işlevini kullanabilirsiniz. Bu, Visual Basic'e bunun onaltılık bir değer olduğunu söylemek ve sonra da bir sayıya dönüştürmek için "&H"
dizesini önekleyerek yapılır.
Dim Value As Integer = Val("&H" & YourHexadecimalStringHere)
Dim hex As String = "A1B2C3D4"
Dim int As Integer = Val("&H" & hex)
diğerleri cevap çalıştı ve bu benim için çalıştı tane oldu:
Convert.ToInt32(yourHEXString, 16)
- 1. VB.NET kullanarak
- 2. Ascii'ye Onluk Dönüştürme
- 3. python Onluk hassaslık
- 4. VB.net Onaltılı onaltı dönüşümü
- 5. vb.net kullanarak veritabanına eklenemiyor
- 6. Mühendis Yazılımını Kolayca Nasıl Ters Çevirirsiniz?
- 7. MySQL'de ikili değeri onluk (39,0) nasıl dönüştürülür?
- 8. VB.NET
- 9. /VB.NET
- 10. VB.NET, C# 'yı direktif kullanarak
- 11. vb.net & EPPlus kullanarak hücre sarmayı
- 12. Okta - API belgelerine kullanarak VB.Net
- 13. nasıl vb.net
- 14. nasıl emin değilim VB.NET
- 15. VB.Net:
- 16. Django - Bir InMemoryUploadedFile öğesini bir ImageField'ın FieldFile haline nasıl çevirirsiniz?
- 17. python datetime tarihlerini onluk aya dönüştürebilir
- 18. VB.NET
- 19. VB.NET
- 20. VB.NET
- 21. Bir FileReader nesnesindeki verileri, yükleme için form verisine nasıl çevirirsiniz?
- 22. VB.NET kullanarak yeni bir txt dosyası oluşturun
- 23. VB.NET kullanarak Şerit açılır menüsüne öğeler ekleme
- 24. vb.net - Datagridview sütununu sayısal olarak sırala
- 25. Hazırda bekleyen sınıf eşleştirmelerini Spring uygulama içeriğine nasıl çevirirsiniz?
- 26. VB.Net
- 27. VB.NET
- 28. VB.net
- 29. VB.NET
- 30. Snippet'ten nasıl kurtulurum? (Vb.Net)
sen bekliyoruz hangi numara? Yani dahili türlerinin çoğu çok daha büyük 192 bit ... bir ... –
Ben numarası olmalıdır bilmiyorum –