programing

VBA에서 간단한 문자열을 바이트 배열로 변환하는 방법은?

powerit 2023. 10. 5. 23:34
반응형

VBA에서 간단한 문자열을 바이트 배열로 변환하는 방법은?

나는 엑셀 VBA를 이용해서 바이트 배열의 간단한 문자열을 변환해야 합니다.그러면 이 바이트 배열이 요청 본문으로 사용됩니다.

내가 어떻게 그럴 수 있을까?

Matthew는 ANSI로 변환하는 방법에 대해 답했지만, 결과 바이트 배열이 원래 유니코드 문자열을 그대로 나타내기를 원한다면, 직접 할당하기만 하면 됩니다.

Public Sub Main()
   Dim b() As Byte
   Dim s As String
   s = "Whatever"
   b = s  'Assign Unicode string to bytes.'
   s = b  'Works in reverse, too!'
   Debug.Print s
End Sub

그것이 전부입니다.각각의 유니코드 문자를 설명하는 연속적인 쌍인 16개 요소 Byte 배열로 끝납니다.

ANSI 문자만 필요한 경우 StrConv() 기능을 사용하면 됩니다.

' a bit of an example
' had some strings down column  G
' nothing in columns "F" or "H"  so that current works
'  Think about it.. there are many many columns
' so leave blank columns on each side of setsof dats
' then currentregion works ... IFF no blank rows in the data
'
' problem to solve  some text  was  Fred3  John2 Blue3
' others were  Bert 3  Green 2 ... which was the require format
'  the ASC char 1 ..255 are the odd or even
'  numbered bytes if array is 1 based or 0 based
'
Private Sub CommandButton1_Click()
    Dim RV$, Ra As Range, Ri&, AL%, WSA() As Byte
    Dim Ci%, WS$, LV As Byte

    Set Ra = Range("g8").CurrentRegion
    For Ri = 1 To Ra.Rows.Count
        WSA = CStr(Ra(Ri, 1).value)
        AL = UBound(WSA)
        LV = WSA(AL - 1)  ' last char byte value
        If LV > 47 And LV < 58 Then    ' 0 to 9
            If WSA(AL - 3) <> 32 Then    ' no space " "
                ReDim Preserve WSA(AL + 2)    ' allow 1 more char
                WSA(AL - 3) = 32    ' put in space
                WSA(AL - 1) = LV    ' return char
                WS = WSA    ' back to a string
                Ra(Ri, 1) = WS  ' back to the cell
            End If
        End If
    Next Ri
End Sub

' of course  the normal VBAcommands  Instr len Mid replace  &
' would do the job ... but my brain is lazy and needed some exercise

언급URL : https://stackoverflow.com/questions/998746/how-to-convert-a-simple-string-to-byte-array-in-vba

반응형