Duda sobre strconv y conversiones byte-caracter

Iniciado por OfTheVara, 8 Julio 2015, 01:12 AM

0 Miembros y 1 Visitante están viendo este tema.

OfTheVara

Buenas,

Necesito convertir de byte (0-255) a caracter, y de caracter a byte de forma inequívoca, en cualquier pais del mundo.

Es decir, si convierto de números a string en mi ordenador, otro que esté en Rumania, por ejemplo, al hacer el proceso inverso y pasar de string a byte, que se obtenga el resultado correcto.

La cosa es que si no especifico "1032" en la funcion strconv la cosa no chuta.

   StrConv(ChrW(142), vbFromUnicode)  --> Me sale 63  (no es correcto)

   StrConv(ChrW(142), vbFromUnicode, 1032)  --> Me sale 142 (es correcto)

Mi duda es, que pasará si el mismo programa se ejecuta en Rumanía o donde sea. Es decir, ¿al especificar el código 1032 la conversion byte-Caracter seguirá siendo igual?  ¿aunque el tipo tenga otra configuración de idioma distinta?

gracias

BlackZeroX

#1
Usa las funciones ASC() o ASCW()...

En dado caso que quieras TODA la String a un array de bytes puedes hacer esto...

OJO Cada caracter en una string de VB6 (Widechar / Unicode) esta compuesto por 2 bytes...

En un modulo cualquiera...
Código (Vb) [Seleccionar]


Option Explicit

Private Declare Sub RtlMoveMemory Lib "kernel32" (ByVal pDst As Long, ByVal pSrc As Long, ByVal ByteLen As Long)

public function str2ArryByte(ByRef str as string) as byte()
dim lData() As byte
dim lSize as long

LSize = LENB(sString)

if (lSize = 0) Then exit function 'No tiene caso que siga si es una cadena sin caracteres.
redim lData(0 to (lSize-1))

RtlMoveMemory byval VarPtr(lData(0)) + &H3, byval StrPtr(sString), lSize

str2ArryaByte = lData

end function



P.D.: Llevo mucho tiempo sin tocar VB6 espero te sea de ayuda (No probé el código)...

Dulces Lunas!¡.
The Dark Shadow is my passion.