No es más código que lo que puse anteriormente en .Net::
Código PHP:
<DllImport("mydll.dll")> _
Private Shared Sub HelloWorld()
End Sub
<DllImport("mydll.dll")> _
Private Shared Function Suma(ByVal value As Integer, ByVal value2 As Integer) As Integer
End Function
<DllImport("mydll.dll")> _
Private Shared Sub getBytes(ByVal value As Long)
End Sub
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
getBytes(1)
End Sub
En C, esta es la implementación de la función getBytes:
Código PHP:
DLLIMPORT void getBytes ( BITDATATYPE value )
{
BITDATATYPE tmpvalue;
int leftshifts;
tmpvalue = value;
leftshifts = 0;
while ( value != 0 )
{
while ( ( ( tmpvalue >> __BYTEBITS__ ) << __BYTEBITS__ ) != 0 )
{
tmpvalue >>= __BYTEBITS__;
leftshifts += 1;
}
push ( getByte ( tmpvalue ) );
rightShift ( (int*)&tmpvalue , leftshifts );
value = ( value ^ ( tmpvalue ) ) << __BYTEBITS__;
tmpvalue = value;
leftshifts = 0;
}
}
En donde BITDATATYPE es un tipo de datos definido por mi, de tipo
unsigned long; __BYTEBITS__ es una constante. Su valor es 8;
rightShift es una función que desplaza un numero de posiciones (2do. parametro) hacia la derecha a un valor (1er parametro).
Saludos!.