Files
Desktop_TelephoneTools/publicMode.vb
2025-12-11 14:07:27 +08:00

192 lines
6.7 KiB
VB.net
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
Imports System.Text
Public Class publicMode
''' <summary>
''' 将字符串转换为 Unicode 编码并交换字符位置
''' </summary>
''' <param name="inputString"></param>
''' <returns></returns>
Shared Function SwapAndPad(inputString As String) As String
Dim sb As New StringBuilder()
Dim length As Integer = inputString.Length
' 处理字符串长度为奇数的情况,在末尾添加一个"F"
If length Mod 2 <> 0 Then
inputString &= "F"
length += 1
End If
' 每两个字符进行交换
For i As Integer = 0 To length - 1 Step 2
' 交换位置:先放第二个字符,再放第一个字符
sb.Append(inputString(i + 1))
sb.Append(inputString(i))
Next
Return sb.ToString()
End Function
''' <summary>
''' 将字符串转换为 Unicode 编码
''' </summary>
''' <param name="inputString"></param>
''' <returns></returns>
Shared Function ConvertToUnicode(inputString As String) As String
Dim sb As New StringBuilder()
Dim maxint As Integer = 0
For Each c As Char In inputString
If maxint < 62 Then
sb.Append(String.Format("\u{0:X4}", CInt(AscW(c))))
End If
' 将每个字符转换为 \uXXXX 格式的 Unicode 码
maxint += 1
Next
Return sb.ToString().Replace("\u", "").Trim
End Function
'字符串转byte数组
Public Shared Function StringToByte(ByVal str As String) As Byte()
Return System.Text.Encoding.Default.GetBytes(str)
End Function
Public Shared Function StringToHexString(ByVal b As String) As String
Dim sbuff = StringToByte(b)
Return ByteToHex(sbuff)
End Function
'byte数组转字符串
Public Shared Function ByteToString(ByVal b As Byte()) As String
Return System.Text.Encoding.Default.GetString(b)
End Function
'byte数组转十六进制字符串
Public Shared Function ByteToHex(ByVal b As Byte()) As String
Dim s As String = ""
For Each c As Byte In b
s += c.ToString("X2")
Next
Return s
End Function
'字符串转十六进制字符串不足两位补0
Public Shared Function StringToHex(ByVal str As String) As String
Dim s As String = ""
For Each c As Char In str
s += Convert.ToString(Asc(c), 16).PadLeft(2, "0")
Next
Return s
End Function
'字符串每两个字节转十六进制字符串 不足两位补0
Public Shared Function StringToHex2(ByVal str As String) As String
Dim s As String = ""
Dim nv As String = ""
For i As Integer = 0 To str.Length - 1 Step 2
nv = str.Substring(i, 1)
If nv.Length = 1 Then
nv = "0" & nv
End If
s += nv
Next
Return s
End Function
Public Shared Function StringToHex3(ByVal str As String) As String
Dim result As String = ""
For Each c As Char In str
Dim bytes As Byte() = System.Text.Encoding.Unicode.GetBytes(c)
For Each b As Byte In bytes
result += b.ToString("X2")
Next
Next
Return result
End Function
'十六进制字符串转byte数组
Public Shared Function HexToByte(ByVal hex As String) As Byte()
Dim b As Byte() = New Byte(hex.Length / 2 - 1) {}
Try
For i As Integer = 0 To hex.Length - 1 Step 2
b(i / 2) = Convert.ToByte(hex.Substring(i, 2), 16)
Next
Catch ex As Exception
Return Nothing
End Try
Return b
End Function
'十六进制字符串转字符串
Public Shared Function ByteToHexString(databuff() As Byte) As String
Dim strData As String = String.Empty
For i = 0 To databuff.Length - 1
strData &= $" {Hex(databuff(i)).PadLeft(2, "0"c)}"
Next
Return strData
End Function
'十六进制字符串转字符串
Public Shared Function HexStringToByte(hexstr As String) As Byte()
Dim result As Byte() = Nothing
'判断字符串是否为空或 者为空字符串
If String.IsNullOrEmpty(hexstr) Then Return Nothing
'替换字符中的分隔符号
hexstr = hexstr.Trim().Replace(" ", "").Replace("-", "").Replace(",", "").Replace(":", "").Replace(";", "").Replace(".", "")
'判断字符串的长度是否为偶数
If hexstr.Length Mod 2 <> 0 Then
'不为偶数往最后一个字节前面补0
hexstr = hexstr.Insert(hexstr.Length - 1, "0")
End If
'以2为步长将字符串转换为字节数组 不足2位前面补0
Try
result = Enumerable.Range(0, hexstr.Length).Where(Function(x) x Mod 2 = 0).Select(Function(x) Convert.ToByte(hexstr.Substring(x, 2), 16)).ToArray()
Catch ex As Exception
result = Nothing
End Try
Return result
End Function
'Public Shared Function HexStringToByte(hexstr As String) As String
' '判断字符串是否为空或 者为空字符串
' If String.IsNullOrEmpty(hexstr) Then Return Nothing
' '替换字符中的分隔符号
' hexstr = hexstr.Trim().Replace(" ", "").Replace("-", "").Replace(",", "").Replace(":", "").Replace(";", "").Replace(".", "")
' '判断字符串的长度是否为偶数
' If hexstr.Length Mod 2 <> 0 Then
' '不为偶数往最后一个字节前面补0
' hexstr = hexstr.Insert(hexstr.Length - 1, "0")
' End If
' '以2为步长将字符串转换为字节数组 不足2位前面补0
' Return hexstr 'Enumerable.Range(0, hexstr.Length).Where(Function(x) x Mod 2 = 0).Select(Function(x) Convert.ToByte(hexstr.Substring(x, 2), 16)).ToArray()
'End Function
''' <summary>
''' Int转2个字节Byte
''' 高字节在前,低字节在后
''' </summary>
''' <param name="i"></param>
''' <returns></returns>
Public Shared Function IntToByteHB(ByVal i As Integer) As Byte()
Dim btemp() As Byte = {0, 0}
Dim b() As Byte = BitConverter.GetBytes(i)
btemp(0) = b(0)
btemp(1) = b(1)
Return btemp
End Function
''' <summary>
''' Int转2个字节Byte
''' 高字节在前,低字节在后
''' </summary>
''' <param name="i"></param>
''' <returns></returns>
Public Shared Function IntToByteLB(ByVal i As Integer) As Byte()
Dim btemp() As Byte = {0, 0}
Dim b() As Byte = BitConverter.GetBytes(i)
btemp(0) = b(1)
btemp(1) = b(0)
Return btemp
End Function
End Class