Hallo ich möchte einen 16 bit hex wert in einen Integer mit vb.net umwandeln
dazu lese ich erstmal etwas in ein array und wandel des dann mitm bitconverter um
aber was sonst funktionier funkt nicht und ich weiß nicht wiso
Code:
Dim wIDB() As Byte
Dim Bytes() As Byte
wIDB = {"&H" & Bytes(2), "&H" & Bytes(3)}
Bytes(2) = CB als hex
und
Bytes(3) = 66 als hex
der Fehler ist :
Die arithmetische Operation hat einen Überlauf verursacht.
kann mir jemand helfen?
der code ist korrekt so hab ich das schon öfters gemacht und auch Bytes(2) und Bytes(3) ist korrekt was habe ich dann falsch gemacht?
und das ergebnis sprengt auch nicht den Ramen eines integer16
Sub Main()
Dim bytes() As Byte = New Byte() {&HCB, &H66}
Dim i As Int16 = BitConverter.ToInt16(bytes, 0)
Console.WriteLine("Integer: {0}", i)
Console.ReadLine()
End Sub
Ah ich hab jetz kapiert warum das den Überlauf verursacht hat ich hab ned bedacht das ich zuert den Bytes(3) einlesen muss wegen Little und Big Endian und so
es geht trozdem ned.
jetz kommt(auch mit deinem code tolio)
Der Objektverweis wurde nicht auf eine Objektinstanz festgelegt.
den fehler kenne ich davon wenn etwas NULL zurück gibt was es aber in diesem fall sicher nicht tut
Quote:
Originally Posted by qkuh
Oder:
Code:
Sub Main()
Dim bytes() As Byte = New Byte() {&HCB, &H66}
Dim i As Int16 = BitConverter.ToInt16(bytes, 0)
Console.WriteLine("Integer: {0}", i)
Console.ReadLine()
End Sub
so geht das ja auch aber der wert muss ja variabel sein nur in dem beispiel hab ich das verwendet
@stotterer09: Ersetz &HCB und &H66 einfach durch Bytes(2) und Bytes(3) bzw durch Bytes(3) und Bytes(2), je nachdem ob little- oder big-endian.
@dready: Ja. Int32 -> 32bits -> 4bytes
Ich bin ja ned blöd ... es liegt auch ned drann das mein code falsch ist sondern das ich irgendwas überseh und es deswegen ned geht ausserdem wäre es.mit den variablen das selbe wie ich im ersten beitrag geschrieben hab
Ausserdem scheitert es doch schon am übetragen in das 2. Arrray vll. War die ünerschtift verfehlt
@dready Ja da liegst du richtig deswegen hab ich ja aus den 32 wieder 16 gemacht
so geht das ja auch aber der wert muss ja variabel sein nur in dem beispiel hab ich das verwendet
Dann zeig doch mal deinen ganzen Code her, sonst kann dir hier keiner helfen, wenn du nicht genauer spezifizierst, was du für eine Ausgangssituation hast. Wie liest du was ein etc.
Dann zeig doch mal deinen ganzen Code her, sonst kann dir hier keiner helfen, wenn du nicht genauer spezifizierst, was du für eine Ausgangssituation hast. Wie liest du was ein etc.
der ganze code ist paar 100 Zeilen lang hier nochmal alles was wichtig ist:
Code:
Private Sub LadenToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles LadenToolStripMenuItem.Click
OpenFileDialog1.ShowDialog()
Bytes = My.Computer.FileSystem.ReadAllBytes(OpenFileDialog1.FileName)
Laden()
End Sub
Private Sub Laden()
AnzahlNPC = New Byte() {"&H" & Bytes(0), "&H" & Bytes(1)} 'das hier funkt noch obwohl es der gleiche code is
MsgBox(BitConverter.ToInt16(AnzahlNPC, 0))
Dim b As Integer = 7
Dim b2 As Integer
Dim NPCCount As Integer = 0
'()
Dim bytesFLoat As Byte()
Dim z As Integer = 0
z = 0
wIDB = {"&H" & Bytes(3), "&H" & Bytes(2)}
wIDI(NPCCount) = BitConverter.ToInt16(wIDB, 0)
'Da kommt noch mehr was aber nichts zur sache tut
End Sub
Und das sind die ersten 9 bytes die eingelesen werden:
der ganze code ist paar 100 Zeilen lang hier nochmal alles was wichtig ist:
Code:
Private Sub LadenToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles LadenToolStripMenuItem.Click
OpenFileDialog1.ShowDialog()
Bytes = My.Computer.FileSystem.ReadAllBytes(OpenFileDialog1.FileName)
Laden()
End Sub
Private Sub Laden()
AnzahlNPC = New Byte() {"&H" & Bytes(0), "&H" & Bytes(1)} 'das hier funkt noch obwohl es der gleiche code is
MsgBox(BitConverter.ToInt16(AnzahlNPC, 0))
Dim b As Integer = 7
Dim b2 As Integer
Dim NPCCount As Integer = 0
'()
Dim bytesFLoat As Byte()
Dim z As Integer = 0
z = 0
wIDB = {"&H" & Bytes(3), "&H" & Bytes(2)}
wIDI(NPCCount) = BitConverter.ToInt16(wIDB, 0)
'Da kommt noch mehr was aber nichts zur sache tut
End Sub
Und das sind die ersten 9 bytes die eingelesen werden:
Code:
1A 01 CB 66 00 00 D5 03 0D
Dein Code ist völliger Schwachsinn, wenn du das erreichen willst, was ich verstanden habe.
Verstanden habe ich folgendes: Du möchtest eine Datei einlesen und die 1. beiden Bytes (WORD) sind die Anzahl der NPCs und die willst du einlesen und im Hex-Format ausgeben.
Ist das korrekt? Oder willst du einen String eingeben der einen Hexadezimalwert enthält und den in einen Integer umwandeln?
Drück dich bitte mal gewählter aus..
Also ich möchte eine datei einlesen und dann den 3und 4. Byte in ein 16bitinteger umwandeln
Bei den code wird 2 mal was in ein array übergegeben beim ersten mal gehts prima beim 2. Mal (in das array widb) gdhts ned
vpj in av i umwandeln 04/10/2012 - Technical Support - 4 Replies Hab ein Video
in avi format, vornedran will ich son intro dranhngen...
aber das Intro ist in vpj..
Wie krieg ich das in AVI...?
.ico in .jpg umwandeln 12/07/2009 - AutoIt - 5 Replies Kann man mit Autoit *.ico "Bilder" in *.jpg Bilder umwandeln?
Ich brauche das nämlich für ein Programm.
Es soll Programme schnell starten. Dazu soll es den Icon eines Programms anzeigen.
So sieht der Code aus:
#include <ButtonConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
[HOW TO] exe umwandeln? 10/04/2009 - Metin2 Private Server - 0 Replies wie wandelt man eine exe um?