Вы спрашиваете быстрее, но, может быть, вы имеете в виду «лучший» или «правильный» или «типичный»?
Вы также просите запятые указать тысячи, но, возможно, вы имеете в виду «в нормальной удобочитаемой форме в соответствии с местным обычаем вашего пользователя »?
Вы делаете это так:
int i = 35634646;
String s = NumberFormat.getIntegerInstance().format(i);
Американцы получат« 35,634,646 »
Немцы получат" 35.634.646 "
Швейцарские немцы получат« 35'634'646 »
Вы можете написать простой синтаксический анализатор для строки, представляющей биты:
Dim sb As StringBuilder = New StringBuilder()
For pos As Integer = 0 To binary.Length - 8 Step 8
sb.Append(Convert.ToByte(binary.Substring(pos, 8), 2).ToString("X2"))
Next
Console.WriteLine(sb) will print "441CB6E2E335D6"
Или использовать модуль для добавления метода расширения к типу данных строки: [ 117]
Imports System.Runtime.CompilerServices
Imports System.Text
Module modStringExtensions
<Extension()>
Public Function ToHexFromBits(ByVal Value As String) As String
If (Not (Value.Length Mod 8 = 0)) Then Throw New FormatException("Invalid string length")
Dim sb As StringBuilder = New StringBuilder()
For pos As Integer = 0 To Value.Length - 8 Step 8
sb.Append(Convert.ToByte(Value.Substring(pos, 8), 2).ToString("X2"))
Next
Return sb.ToString()
End Function
End Module
Затем используйте расширение для преобразования строки битов в представление HEX :
Dim result As String = binary.ToHexFromBits()
Следующий код - c #, но его не сложно перевести на vb.net.
string BinToHex(string value)
{
var res = new char[(int)(value.Length / 4)];
int j = res.Length-1;
for (int i = value.Length - 1; i > 0; i -= 4)
{
int x = ((int)value[i]-48)
+((int)value[i-1]-48)*2
+((int)value[i-2]-48)*4
+((int)value[i-3]-48)*8;
res[j--] = x.ToString("X")[0];
}
return new string(res);
}
Остерегайтесь: он не будет обрабатывать ввод, который не имеет правильного количества битов (кратных 4). В любом случае, идея заключается в том, что вы можете переводить между основанием 2 и основанием 16 без использования основания 10. Вы можете даже шагать слева направо.