Tôi cần chuyển đổi hex thành số thập phân trong VB.NET. Tìm thấy một số ví dụ trong C#, nhưng khi tôi cố gắng chuyển đổi sang VB.NET tôi đã không thành công. Ví dụ về số thập lục phân mà tôi đang cố chuyển đổi là "A14152464C203230304232323020572F544947455234352E".Làm cách nào để chuyển đổi hex sang thập phân bằng VB.NET?
Trả lời
Đó là số 24 byte (192 bit); bạn mong đợi giá trị nào?
Lưu ý rằng bạn có thể sử dụng Convert
để làm rất nhiều công việc grungy đây - ví dụ (trong C#):
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);
}
Làm thế nào bạn nhận được từ raw
đối với một số phụ thuộc vào những gì bạn nghĩ con số này ...
Visual Basic dịch biếu không của .NET Reflector (mặc dù "-1" trông lẻ):
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
Tôi không biết số lượng nên là gì. Lockhead Martin mới bắt đầu chuyển dữ liệu này và họ chưa hoàn tất tài liệu. Chúng ta đang ở trong một chế độ khám phá vào lúc này. Tôi có nên tổng hợp các giá trị thô (i) để lấy số không? – user38349
Không; đó sẽ là xấu ... vấn đề là: phải làm gì với 192 bit?đó có thể là 3 longs (Int64), 6 ints (Int32), 2 thập phân, một BigInteger, v.v ... nhưng nó là big-endian, little-endian, vv ... giải mã nhị phân cần một chút * chút kiến thức về nguồn. –
-1 là chính xác, cú pháp khai báo mảng VB cho giới hạn trên của mảng trong khi C# cho số lượng các mục trong mảng. Vì mảng là 0 dựa trên giới hạn trên là một ít hơn số lượng các mục. – MarkJ
Viết một mình.
Bạn sẽ cần phải mã hóa chuỗi, sau đó bắt đầu từ bên phải và làm việc theo cách của bạn sang trái.
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;
}
Điều gì đó tương tự.
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
Điều này sẽ không hoạt động đối với thập phân và Hex quá dài đối với số nguyên ... nhưng bạn có ý tưởng. Bạn có thể chia nó và tái kết hợp.
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
này sẽ chuyển đổi của bạn Tring vào một mảng byte:
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
Đối với các giá trị hex mà không thực sự đòi hỏi một lớp bignum để làm việc với, bạn có thể sử dụng chức năng chuyển đổi bình thường nhưng tiền tố số với "& H". VB giải thích "& H" trong văn bản có nghĩa là "đây là số hex", giống như trong mã.
dim n = Cint("&H" & text)
Bạn có thể sử dụng chức năng Val
trong Visual Basic để chuyển đổi một giá trị thập lục phân đến một giá trị thập phân. Điều này được thực hiện bằng cách đặt trước chuỗi với "&H"
, để cho Visual Basic biết rằng đây là giá trị thập lục phân, sau đó chuyển đổi thành một số.
Dim Value As Integer = Val("&H" & YourHexadecimalStringHere)
Dim hex As String = "A1B2C3D4"
Dim int As Integer = Val("&H" & hex)
Cố gắng trả lời những người khác và đây là một trong đó làm việc cho tôi:
Convert.ToInt32(yourHEXString, 16)
- 1. Chuyển đổi số thập phân sang hex bằng Erlang?
- 2. Làm cách nào để chuyển đổi hex sang thập phân bằng Python?
- 3. Chuyển đổi thập phân sang thập phân trong lisp chung
- 4. Làm cách nào để chuyển đổi số thập phân thành hex trong VIM?
- 5. Chuyển đổi hex sang float
- 6. Chuyển đổi số thập phân <-> hex
- 7. Chuyển đổi số thập phân sang nhị phân trong python
- 8. Làm thế nào để chuyển đổi hex sang rgb bằng cách sử dụng Java?
- 9. Chuyển đổi đường hex sang giá trị thập phân trong delphi
- 10. Chuyển đổi Hexadecimal để thập phân
- 11. hex đến 64 Ký số thập phân
- 12. Làm thế nào để chuyển đổi Hex sang nhị phân iphone
- 13. Làm thế nào để chuyển đổi số trong số hex, oct, thập phân và nhị phân trong OCaml?
- 14. Làm thế nào để chuyển đổi màu HEX sang rgba bằng trình biên dịch Ít hơn?
- 15. Có cách nào để chuyển đổi số thập phân sang thời gian trong MySQL không?
- 16. Chuyển đổi chuỗi thập lục phân (hex) thành một chuỗi nhị phân
- 17. Chuyển đổi từ RGB int sang Hex
- 18. Chuyển mảng byte sang số thập phân
- 19. Chuyển đổi Float sang thập phân (SQL Server)
- 20. Khai báo hằng số hex trong VB.NET
- 21. Làm thế nào để chuyển đổi số nguyên sang thập phân trong truy vấn SQL Server?
- 22. python: làm thế nào để chuyển đổi tiền tệ sang thập phân?
- 23. Cách nhanh chóng để chuyển đổi số nhị phân sang số thập phân
- 24. Chia 'thập phân' trong VB.NET
- 25. Chuyển đổi system.windows.media.brush sang mã màu hex
- 26. Chuyển đổi chuỗi thập lục phân thành chuỗi nhị phân
- 27. Làm cách nào để chuyển đổi UIColor thành chuỗi thập lục phân?
- 28. Chuyển đổi số thập phân sang DD: HH: MM
- 29. Chuyển đổi mô-đun VB6 sang VB.NET
- 30. chuyển đổi dấu thập phân
số gì là bạn mong đợi? Đó là 192 bit ... lớn hơn nhiều so với hầu hết các loại sẵn có ... –
(lưu ý tôi đã thêm một bình luận trả lời câu hỏi của bạn) –