Ho bisogno di convertire una stringa semplice in un array Byte usando excel VBA. Quindi questa matrice di byte viene utilizzata come corpo della richiesta.Come convertire una stringa semplice in array di byte in VBA?
Come posso farlo?
Grazie.
Ho bisogno di convertire una stringa semplice in un array Byte usando excel VBA. Quindi questa matrice di byte viene utilizzata come corpo della richiesta.Come convertire una stringa semplice in array di byte in VBA?
Come posso farlo?
Grazie.
Se sono necessari solo caratteri ANSI, è possibile utilizzare la funzione StrConv() as is done here.
Matthew ha risposto come convertire ANSI, ma se si voleva l'array di byte risultante a rappresentare ancora la stringa Unicode originale, devi semplicemente assegnare direttamente:
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
Questo è tutto ciò che devi fare. Si finisce con un array Byte a 16 elementi, ogni coppia successiva che descrive un carattere Unicode.
BTW per ottenere i commenti correttamente evidenziati negli esempi di codice VB, aggiungere un altro apostrofo 'alla fine di ogni riga di codice – MarkJ
Esiste una guida a questo, da qualche parte? Ho trovato l'inserimento del codice per essere straordinariamente noioso. –
' 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
Entrambe le risposte funzionano bene ma questo richiede meno tempo e programmazione. – Ubalo