Я искал способ преобразования десятичного значения в двоичную строку, но до сих пор не удалось. Я нашел много способов конвертировать целое число в двоичное (How to convert a decimal number to a binary number with fixed bits, How to convert from decimal to binary .NET например), но я хочу иметь возможность конвертировать десятичные значения (2.5, 2374098.034286197548 и т. Д.). Есть ли способ, или нет способа конвертировать фактические десятичные значения?Преобразование десятичного в двоичный файл в VB.NET
ответ
Мне кажется, что нет реального правильного способа преобразования чисел с десятичными позициями (1.03, 234.65), поэтому я решил сделать что-то грязное, чтобы его обработать.
Dim this As String = String.Empty
For Each Match As Match In Regex.Matches(BoxyBoxington.Text, "\d+")
If Match.Value.toDecimal <= Byte.MaxValue.toDecimal Then
this = this + Convert.ToString(Match.Value.toByte, 2).PadLeft(8, "0") + NewLine
ElseIf Match.Value.toDecimal <= Short.MaxValue.toDecimal Then
this = this + Convert.ToString(Match.Value.toShort, 2).PadLeft(16, "0") + NewLine
ElseIf Match.Value.toDecimal <= Integer.MaxValue.toDecimal Then
this = this + Convert.ToString(Match.Value.toInteger, 2).PadLeft(32, "0") + NewLine
ElseIf Match.Value.toDecimal <= Long.MaxValue.toDecimal Then
this = this + Convert.ToString(Match.Value.toLong, 2).PadLeft(64, "0") + NewLine
Else
Exit For
End If
Next
Это занимает число до и после десятичной отдельно и преобразует их в зависимости от наименьшего целого типа они вписываются. Затем это можно сохранить по желанию и преобразовать обратно на основе обратного вам желаемого метода сохранения.
Мои пользовательские расширения:
''' <summary>
''' Handles conversion of variable into Long Integer.
''' </summary>
''' <param name="X"></param>
''' <param name="I">Returned if conversion fails.</param>
''' <returns>Signed 64bit Integer</returns>
''' <remarks></remarks>
<Extension> _
Public Function toLong(Of T)(ByRef X As T, Optional I As Long = 0) As Long
Dim S As String = X.ToString
Try
If S = String.Empty Then
Return I
Else
Return Long.Parse(S)
End If
Catch
Dim result As String = String.Empty
Dim ReturnLong As Long
Dim Parsed As Byte
For Each Character In S.ToCharArray
If Character = "-" Then
If S.Substring(0, 1).ToString <> "-" Then
result = Character + result
End If
End If
If Character = "." Then
Exit For
End If
If Byte.TryParse(Character, Parsed) Then
result = result + Parsed.ToString
End If
Next
If result <> String.Empty Then
If Integer.TryParse(result, ReturnLong) Then
Return Integer.Parse(ReturnLong)
Else
If Double.Parse(result) > Double.Parse(Integer.MaxValue.ToString) Then
Return Integer.MaxValue
ElseIf Double.Parse(result) < Double.Parse(Integer.MinValue.ToString) Then
Return Integer.MinValue
Else
Return Integer.Parse(ReturnLong)
End If
End If
Else
Return I
End If
End Try
End Function
''' <summary>
''' Handles conversion of variable to Integer.
''' </summary>
''' <param name="X"></param>
''' <param name="I">Returned if conversion fails.</param>
''' <returns>Signed 32bit Integer</returns>
''' <remarks></remarks>
<Extension> _
Public Function toInteger(Of T)(ByRef X As T, Optional I As Integer = 0) As Integer
Dim S As String = X.ToString
Try
If S = String.Empty Then
Return I
Else
Return Integer.Parse(S)
End If
Catch
Dim result As String = String.Empty
Dim ReturnInt As Integer
Dim Parsed As Byte
For Each Character In S.ToCharArray
If Character = "-" Then
If S.Substring(0, 1).ToString <> "-" Then
result = Character + result
End If
End If
If Character = "." Then
Exit For
End If
If Byte.TryParse(Character, Parsed) Then
result = result + Parsed.ToString
End If
Next
If result <> String.Empty Then
If Integer.TryParse(result, ReturnInt) Then
Return Integer.Parse(ReturnInt)
Else
If Double.Parse(result) > Double.Parse(Integer.MaxValue.ToString) Then
Return Integer.MaxValue
ElseIf Double.Parse(result) < Double.Parse(Integer.MinValue.ToString) Then
Return Integer.MinValue
Else
Return Integer.Parse(ReturnInt)
End If
End If
Else
Return I
End If
End Try
End Function
''' <summary>
''' Handles conversion of variable to Short Integer.
''' </summary>
''' <param name="X"></param>
''' <param name="I">Returned if conversion fails.</param>
''' <returns>Signed 16bit Integer</returns>
''' <remarks></remarks>
<Extension> _
Public Function toShort(Of T)(ByRef X As T, Optional I As Short = 0) As Short
Dim S As String = X.ToString
Try
If S = String.Empty Then
Return I
Else
Return Short.Parse(S)
End If
Catch
Dim result As String = String.Empty
Dim ReturnShort As Short
Dim Parsed As Byte
For Each Character In S.ToCharArray
If Character = "-" Then
If S.Substring(0, 1).ToString <> "-" Then
result = Character + result
End If
End If
If Character = "." Then
Exit For
End If
If Byte.TryParse(Character, Parsed) Then
result = result + Parsed.ToString
End If
Next
If result <> String.Empty Then
If Short.TryParse(result, ReturnShort) Then
Return Short.Parse(ReturnShort)
Else
If Integer.Parse(result) > Integer.Parse(Short.MaxValue.ToString) Then
Return Short.MaxValue
ElseIf Integer.Parse(result) < Integer.Parse(Short.MinValue.ToString) Then
Return Short.MinValue
Else
Return Short.Parse(ReturnShort)
End If
End If
Else
Return I
End If
End Try
End Function
''' <summary>
''' Handles conversion of variable to Tiny Integer
''' </summary>
''' <param name="X"></param>
''' <param name="I">Returned if conversion fails.</param>
''' <returns>Signed 8bit Integer</returns>
''' <remarks></remarks>
<Extension> _
Public Function toSByte(Of T)(ByRef X As T, Optional I As SByte = 0) As SByte
Dim S As String = X.ToString
Try
If S = String.Empty Then
Return I
Else
Return SByte.Parse(S)
End If
Catch
Dim result As String = String.Empty
Dim ReturnByte As SByte
Dim Parsed As Byte
For Each Character In S.ToCharArray
If Character = "-" Then
If S.Substring(0, 1).ToString <> "-" Then
result = Character + result
End If
End If
If Character = "." Then
Exit For
End If
If Byte.TryParse(Character, Parsed) Then
result = result + Parsed.ToString
End If
Next
If result <> String.Empty Then
If SByte.TryParse(result, ReturnByte) Then
Return SByte.Parse(ReturnByte)
Else
If Short.Parse(result) > Short.Parse(SByte.MaxValue.ToString) Then
Return SByte.MaxValue
ElseIf Short.Parse(result) < Short.Parse(SByte.MinValue.ToString) Then
Return SByte.MinValue
Else
Return I
End If
End If
Else
Return I
End If
End Try
End Function
''' <summary>
''' Handles conversion of variable to Tiny Integer
''' </summary>
''' <param name="X"></param>
''' <param name="I">Returned if conversion fails.</param>
''' <returns>Unsigned 8bit Integer</returns>
''' <remarks></remarks>
<Extension> _
Public Function toByte(Of T)(ByRef X As T, Optional I As Byte = 0) As Byte
Dim S As String = X.ToString
Try
If S = String.Empty Then
Return I
Else
Return Byte.Parse(S)
End If
Catch
Dim result As String = String.Empty
Dim ReturnByte As Byte
Dim Parsed As Byte
For Each Character In S.ToCharArray
If Character = "-" Then
If S.Substring(0, 1).ToString <> "-" Then
Exit For
End If
End If
If Character = "." Then
Exit For
End If
If Byte.TryParse(Character, Parsed) Then
result = result + Parsed.ToString
End If
Next
If result <> String.Empty Then
If Byte.TryParse(result, ReturnByte) Then
Return Byte.Parse(ReturnByte)
Else
If Short.Parse(result) > Short.Parse(Byte.MaxValue.ToString) Then
Return Byte.MaxValue
ElseIf Short.Parse(result) < Short.Parse(Byte.MinValue.ToString) Then
Return Byte.MinValue
Else
Return I
End If
End If
Else
Return I
End If
End Try
End Function
<Extension> _
Public Function toDecimal(Of T)(X As T) As Decimal
Dim s As String = X.ToString
Try
If s = String.Empty Then
Return 0
Else
Return Decimal.Parse(s)
End If
Catch
Dim result As String = String.Empty
Dim ReturnDec As Decimal
Dim Parsed As Byte
For Each Character In s.ToCharArray
If Character = "-" Then
If s.Substring(0, 1).ToString <> "-" Then
result = Character + result
End If
End If
If Character = "." Then
result = result + Character
End If
If Byte.TryParse(Character, Parsed) Then
result = result + Parsed.ToString
End If
Next
If result <> String.Empty Then
If Decimal.TryParse(result, ReturnDec) Then
Return Decimal.Parse(ReturnDec)
Else
Return 0
End If
Else
Return 0
End If
End Try
End Function
Это не очень красиво, но я думаю, он будет работать достаточно хорошо для меня.
Результаты использования:
100,13 - 01100100 и 00001101
52000,500 - 00000000000000001100101100100000 и 0000000111110100
Это требует доработки, но это то, что я придумал. Если кто-то может найти некоторые улучшения, не стесняйтесь, дайте мне знать.
- 1. Преобразование десятичного в двоичный файл в java
- 2. Преобразование из десятичного в двоичный
- 3. Преобразование десятичного в IEEE двоичный
- 4. Преобразование десятичного числа в двоичный
- 5. Преобразование десятичного в шестнадцатеричный/двоичный
- 6. Преобразование десятичного в двоичный (Java)
- 7. Преобразование из десятичного в двоичный
- 8. VB.net Преобразование десятичного в шестнадцатеричное
- 9. преобразование десятичного числа в подписанный двоичный код
- 10. Преобразование десятичного разряда в двоичный файл в Haskell
- 11. Преобразование десятичного числа в двоичный файл в Python
- 12. Преобразование из десятичного в двоичный в Ocaml
- 13. Преобразование десятичного в двоичный в ассемблере
- 14. Преобразование десятичного в двоичный, а затем двоичный в неизвестный формат?
- 15. Преобразование матричных элементов из десятичного в двоичный
- 16. Преобразование из десятичного в двоичный - python
- 17. Преобразование десятичного в двоичный с помощью указателей
- 18. преобразование десятичного числа в двоичный вывод
- 19. Преобразование десятичного IP-адреса в двоичный файл (Python)
- 20. Преобразование десятичного разряда в двоичный файл на микробит
- 21. vb.net читать двоичный файл
- 22. Преобразование символ в двоичный файл
- 23. Преобразование приложения в двоичный файл
- 24. Преобразование десятичного числа в двоичный в указанном диапазоне
- 25. Преобразование отрицательного десятичного знака в двоичный код в T-SQL
- 26. Преобразование десятичного в двоичный в C++ с правильным размером бита
- 27. запись битам в двоичный файл в VB.Net
- 28. C# двоичный массив до десятичного?
- 29. Преобразование десятичного в двоичный с использованием рекурсии Java
- 30. Преобразование десятичного числа в двоичный формат с использованием Java
Я не знаю ничего встроенного, нет ... вы хотите, чтобы он был двоичным с двоичной точкой, например. "10.1" для (десятичный) 2.5? –
Я не уверен, сколько битов мне нужно для этого, но я хотел его в двоичном формате байта (0000 0000, 0000 0001). – ARidder101
'Decimal.GetBits()'? –