Ver Mensaje Individual
  #2 (permalink)  
Antiguo 20/09/2010, 08:39
Avatar de didix16
didix16
 
Fecha de Ingreso: agosto-2009
Mensajes: 19
Antigüedad: 14 años, 8 meses
Puntos: 0
Respuesta: Ayuda: Escribir en binario un string hexadecimal

Me auto respondo corrigo:
Resulta que en el posicionamiento de los bytes se hace en decimal, no en hexa, como tenia puesto.
Bueno aqui dejo el código por si a alguien le interesa la idea
Código:
Private Sub export_to_GCT_Click()

Dim sFile As String
CommonDialog1.ShowSave
If Len(CommonDialog1.Filename) = 0 Then
End If
sFile = CommonDialog1.Filename
Dim Caracteres As Integer
Dim GCTFooter As DATAQUERY
Dim GCTHeader() As Byte
Dim prueba As String
Dim dataArr() As Byte
Dim dataConstArr() As Byte
Dim canalLibre As Integer
Dim ByteIndex As Integer
canalLibre = FreeFile
prueba = TestRegExp("([A-F]|[0-9]){8}(([A-F]|[0-9]){1,255})?", Text2.Text)
Caracteres = Len(prueba) '=64
ReDim dataArr(Caracteres) As Byte ' Array de 64
ReDim dataConstArr(Len("FF00000000000000")) As Byte 'Array de 16
ReDim GCTHeader(Len("00D0C0DE00D0C0DE")) As Byte 'Array de 16
MsgBox (prueba)
MsgBox (Caracteres)
'dataArr = StringToDataQuery(prueba, Caracteres)
Open sFile For Binary As #canalLibre
'Cabezal GCT
For Y = 0 To 7
GCTHeader(Y) = Val("&H" + Mid$("00D0C0DE00D0C0DE", ((Y * 2) + 1), 2))
Put #canalLibre, , GCTHeader(Y)
Next Y
'Contenido
For ByteIndex = 0 To (Caracteres / 2) - 1
dataArr(ByteIndex) = Val("&H" + Mid$(prueba, ((ByteIndex * 2) + 1), 2))
Put #canalLibre, 8 + 1 + ByteIndex, dataArr(ByteIndex)
Next ByteIndex
'Final GCT
For X = 0 To 7
dataConstArr(X) = Val("&H" + Mid$("FF00000000000000", ((X * 2) + 1), 2))
Put #canalLibre, UBound(GCTHeader) / 2 + UBound(dataArr) / 2 + 1 + X, dataConstArr(X)
result = UBound(GCTHeader) / 2 + UBound(dataArr) / 2 + 1 + X
MsgBox ("Pos=" & result & "Data=" & dataConstArr(X))
Next X
Close #canalLibre
End Sub