elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Curso de javascript por TickTack


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  .NET (C#, VB.NET, ASP)
| | | |-+  Programación Visual Basic (Moderadores: LeandroA, seba123neo)
| | | | |-+  strings binarios ¿como?
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: strings binarios ¿como?  (Leído 2,564 veces)
SERBice


Desconectado Desconectado

Mensajes: 934


Ver Perfil WWW
strings binarios ¿como?
« en: 28 Noviembre 2007, 00:13 am »

si tengo el numero 1562036412 y lo quiero enviar por winsock, pero que no me ocupe los 10 digitos como si fuera un string y queiro mandarlo como si fuera binario, es decir un long en un string de modo que me envie 4 bytes (lo que seria algo como "¼È]" ó chr$(188) & chr$(200) & chr$(26) & chr$(93) segun mis calculos) ¿¿¿ como puedo hacerlo???

de momento lo hago usando arcivos binarios, escribo un archvo (una variable long en un archivo), la leo como string y la mando (y asi me ocupa solo 4 bytes) y en el otro lado del winsock hago la inversa, pero presumo qe  a gran escala puede traer una baja en el rendimiento ademas deno ser e metodo correcto. asi pues, queda planteada la inquietud, espero que alguen sepa la respuesta.



En línea

cobein


Desconectado Desconectado

Mensajes: 759



Ver Perfil WWW
Re: strings binarios ¿como?
« Respuesta #1 en: 28 Noviembre 2007, 02:10 am »

Código
  1. Option Explicit
  2.  
  3. Private Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (pDst As Any, pSrc As Any, ByVal ByteLen As Long)
  4.  
  5. Private Sub Form_Load()
  6.    Dim b(3) As Byte
  7.    Dim lNum As Long
  8.  
  9.    lNum = 1562036412
  10.    CopyMemory b(0), lNum, &H4
  11.  
  12.    Dim i As Long
  13.  
  14.    For i = 0 To 3: Debug.Print b(i);: Next
  15.  
  16. End Sub
  17.  


En línea

http://www.advancevb.com.ar
Más Argentino que el morcipan
Aguante el Uvita tinto, Tigre, Ford y seba123neo
Karcrack es un capo.
SERBice


Desconectado Desconectado

Mensajes: 934


Ver Perfil WWW
Re: strings binarios ¿como?
« Respuesta #2 en: 28 Noviembre 2007, 02:57 am »

muchas gracias por responder....

sere curioso ¿y para hacer el proceso opuesto?, es decir, para pasar del string formado por los valores byte a long (de ¼È] a 1562036412 por ejemplo.).

nuevamente muchas gracias.
En línea

cobein


Desconectado Desconectado

Mensajes: 759



Ver Perfil WWW
Re: strings binarios ¿como?
« Respuesta #3 en: 28 Noviembre 2007, 02:59 am »

Código
  1. Option Explicit
  2.  
  3. Private Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (pDst As Any, pSrc As Any, ByVal ByteLen As Long)
  4.  
  5. Private Sub Form_Load()
  6.    Dim b(3) As Byte
  7.    Dim lNum As Long
  8.  
  9.    lNum = 1562036412
  10.    CopyMemory b(0), lNum, &H4
  11.  
  12.    Dim i As Long
  13.  
  14.    For i = 0 To 3: Debug.Print b(i);: Next
  15.  
  16.    lNum = 0
  17.    CopyMemory lNum, b(0), &H4
  18.  
  19.    Debug.Print lNum
  20.  
  21. End Sub
En línea

http://www.advancevb.com.ar
Más Argentino que el morcipan
Aguante el Uvita tinto, Tigre, Ford y seba123neo
Karcrack es un capo.
SERBice


Desconectado Desconectado

Mensajes: 934


Ver Perfil WWW
Re: strings binarios ¿como?
« Respuesta #4 en: 28 Noviembre 2007, 03:09 am »

nuevamente gracias, he hecho estas dos funciones muy basicas (y sin cntrol de errores, luego se lo hare dado que si los parametros que se le pasan, en especial a FromBinary son nulos o strings vacios daran error).

Código
  1. Option Explicit
  2.  
  3. Private Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (pDst As Any, pSrc As Any, ByVal ByteLen As Long)
  4.  
  5. Function ToBinary(lnum As Long) As String
  6.    Dim b(3) As Byte
  7.    Dim i As Long
  8.    Dim strmsg As String
  9.  
  10.    CopyMemory b(0), lnum, &H4
  11.  
  12.    For i = 0 To 3
  13.        strmsg = strmsg & Chr$(b(i))
  14.    Next
  15.    ToBinary = strmsg
  16. End Function
  17. Function FromBinary(strmsg As String) As Long
  18.    Dim c() As Byte
  19.    Dim lnum As Long
  20.    Dim i As Long
  21.  
  22.    For i = 1 To Len(strmsg)
  23.        ReDim Preserve c(i - 1)
  24.        c(i - 1) = Asc(Mid$(strmsg, i, 1))
  25.    Next
  26.  
  27.    CopyMemory lnum, c(0), Val("&H" & UBound(c) + 1)
  28.  
  29.  
  30.    FromBinary = lnum
  31. End Function
  32. Private Sub Form_Load()
  33. MsgBox ToBinary(96412234)
  34. MsgBox FromBinary(ToBinary(96412234))
  35.  
  36. End Sub
  37.  

edit: quisiera escuchar sugerencias y opiniones.
En línea

cobein


Desconectado Desconectado

Mensajes: 759



Ver Perfil WWW
Re: strings binarios ¿como?
« Respuesta #5 en: 28 Noviembre 2007, 06:29 am »

Código
  1. Option Explicit
  2.  
  3. Private Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (pDst As Any, pSrc As Any, ByVal ByteLen As Long)
  4.  
  5. Function ToBinary(lnum As Long) As String
  6.    Dim b(3) As Byte
  7.  
  8.    CopyMemory b(0), lnum, &H4
  9.    ToBinary = StrConv(b, vbUnicode)
  10. End Function
  11.  
  12. Function FromBinary(strmsg As String) As Long
  13.    Dim b() As Byte
  14.  
  15.    b = StrConv(strmsg, vbFromUnicode)
  16.    CopyMemory FromBinary, b(0), &H4
  17. End Function
  18.  
  19. Private Sub Form_Load()
  20.  
  21.    Debug.Print FromBinary(ToBinary(96412234))
  22.  
  23. End Sub
En línea

http://www.advancevb.com.ar
Más Argentino que el morcipan
Aguante el Uvita tinto, Tigre, Ford y seba123neo
Karcrack es un capo.
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Como ingresar dos strings como parametros en una funcion
Programación C/C++
SNP 5 3,875 Último mensaje 17 Mayo 2012, 20:07 pm
por exel
montar sus strings como quieras « 1 2 »
Programación Visual Basic
DELPHI-XE6 16 8,621 Último mensaje 19 Agosto 2014, 23:48 pm
por seba123neo
Cómo Traducir las Strings de un VB.net?
Ingeniería Inversa
02k0 8 5,452 Último mensaje 29 Septiembre 2015, 23:48 pm
por 02k0
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines