Int64 in Int32 zerlegen

12/12/2008 - 16:31 von Martin Jau | Report spam
Hallo,
ich stehe irgendwie auf der Leitung.

wie kann ich einen Int64
zb. 123456789012345678

in eine Structur mit (wie folgt):
Structure Large_Int
Low as Int32
High as Int32
End Structure

zerlegen.

Danke
 

Lesen sie die antworten

#1 Peter Fleischer
12/12/2008 - 18:06 | Warnen spam
"Martin Jau" schrieb im Newsbeitrag
news:
Hallo,
ich stehe irgendwie auf der Leitung.

wie kann ich einen Int64
zb. 123456789012345678

in eine Structur mit (wie folgt):
Structure Large_Int
Low as Int32
High as Int32
End Structure



Hi Martin,
eine Zerlegung Int32 ist wenig sinnvoll, da das höchswertigste Bit das
Vorzeichen ist. Besser ist da UInt in einer Überlagerungsstruktur, z.B. so:

Option Infer On
Option Strict On

Imports System.Runtime.InteropServices

Public Module Module1

Public Sub Main()

Dim l As Long = 123456789012345678

Dim s0 As S
s0.lo = l

Console.WriteLine( _
String.Format("int High: {0}, int Low: {1}", s0.High, s0.Low))

Console.ReadLine()
End Sub

End Module

<StructLayout(LayoutKind.Explicit)> _
Structure S
<FieldOffset(0)> Dim Low As UInt32
<FieldOffset(3)> Dim High As UInt32
<FieldOffset(0)> Dim lo As Long
End Structure


Viele Grüsse
Peter

Ähnliche fragen