Καλώς ορίσατε στο dotNETZone.gr - Σύνδεση | Εγγραφή | Βοήθεια
σε

 

Αρχική σελίδα Ιστολόγια Συζητήσεις Εκθέσεις Φωτογραφιών Αρχειοθήκες

Convert-Hex-Asc Ascii

Îåêßíçóå áðü ôï ìÝëïò SotirisPap. Τελευταία δημοσίευση από το μέλος SotirisPap στις 19-01-2008, 13:55. Υπάρχουν 6 απαντήσεις.
Ταξινόμηση Δημοσιεύσεων: Προηγούμενο Επόμενο
  •  15-01-2008, 01:27 39201

    Convert-Hex-Asc Ascii

        Public Shared Sub main()
            Dim t1 As String = Hex(Asc("Ζ"))
            Dim t2 As String = Hex(Asc("Έ"))
            Dim t3 As String = Hex(Asc("Q"))
            Dim t4 As String = Hex(Asc("8"))
            Dim t5 As String = Hex(Asc("Ο"))
            Dim t6 As String = Hex(Asc("k"))
            Dim t7 As String = Hex(Asc("t"))
            Dim t8 As String = Hex(Asc("Ε"))
            Dim t9 As String = Hex(Asc(" "))
            Dim t10 As String = Hex(Asc("@"))
            Dim tt As String = t1 + t2 + t3 + t4 + t5 + t6 + t7 + t8 + t9 + t10
            Dim i As Integer = Convert.ToUInt16(tt, 16)
            MsgBox("i:" & i & "    tt:" & tt)
        End Sub

    Οι χαρακτήρες ΖΈQ8ΟktΕ @  είναι χαρακτήρες Ascii από Dos αρχείο που έχει γείνει Encoding.GetEncoding(737)
    Γράφω το παραπάνω και πρέπει να πάρω i=8888888888,88

    Φυσικά δεν τα καταφέρνω.
    Είμαι σε λάθος δρόμο ;
    Υπάρχει κάπου βοήθεια;

  •  18-01-2008, 01:03 39315 σε απάντηση της 39201

    Απ: Convert-Hex-Asc Ascii

        Public Shared Sub main()
            Dim str As String = "ΖΈQ8ΟktΕ @"
            Dim c As Char
            Dim tt As String = ""
            For Each c In str
                tt += Hex(Asc(c))
            Next
            Dim i As Decimal = Convert.ToInt64(tt, 16)
            MsgBox("str:" & str & "      tt:" & tt & "  Double ii:" & "i")
        End Sub

    Ας το βάλω λίγο ποιό όμορφο .
    Αλλά πάλι με τα ιδια αποτελέσματα μετά από πολλές ώρες δουλειά.

    Ευχαριστώ

  •  18-01-2008, 22:51 39339 σε απάντηση της 39315

    Απ: Convert-Hex-Asc Ascii

    Τί προσπαθείς να κάνεις? Θα πρέπει να μας πεις τί προσπαθείς να κάνεις για να σου πούμε πως μπορεί να γίνει. Όσον αφορά τον κώδικα σου δεν μπορεί να δουλέψει γιατί το string είναι πολύ μεγάλο. Ένας αριθμός 64-bit αναπαριστάται από 16 hex ψηφία. Για κάθε Char δημιουργούνται δύο hex ψηφία. Αυτό σημαίνει ότι μπορείς να δουλέψεις το πολύ με 8 chars ενώ εσύ περνάς 10. Έχεις πρόβλημα επίσης και με τον τρόπο που δημιουργείς το string για το MessageBox. Καταρχήν αντί για το i χρησιμοποιείς το string i. Επιπλέον, ο τρόπος με τον οποίο δημιουργείς τα string δημιουργεί περιττά temporary strings. Αυτό ήταν πρόβλημα στην VB6 και παραμένει στην VB.NET. Είναι πολύ πιο εύκολο να χρησιμοποιήσεις την String.Format, π.χ. MsgBox(String.Format("str: {0} tt: {1} Double: {2}", str, tt, i))

    Ίσως αυτό που προσπαθείς να κάνεις είναι να διαβάσεις από ένα binary αρχείο δεδομένα. Σε αυτή την περίπτωση μπορείς απλά να χρησιμοποιήσεις την File.ReadAllBytes για να διαβάσεις τα δεδομένα. Μπορείς επίσης να μετατρέψεις ένα string σε byte array χρησιμοποιώντας την Encoding.GetBytes, π.χ. Dim bytes As Byte() = Encoding.GetEncoding(737).GetBytes(str)


    Παναγιώτης Καναβός, Freelancer
    Twitter: http://www.twitter.com/pkanavos
  •  19-01-2008, 00:59 39347 σε απάντηση της 39339

    Απ: Convert-Hex-Asc Ascii

    Ευχαριστώ για την σύνταξη του MsgBox.
    Χίλια συγνώμην εάν δεν ήμουν αρκετά σαφής.

    Επανατοποθετούμαι :
    Εχω ένα txt αρχείο(dst) που προέρχεται από Dos πρόγραμμα και το περιεχόμενό του είναι σαν την επόμενη γραμμή :
    ‹€‰“ˆƒ†‘ €Œƒ„€‘                 {®GαzŽ?{®GαzŽ @

    Mε τον παρακάτω κώδικα **
    1. το κάνω Encoding.GetEncoding(737)
    2. το φορτώνω σε table
    3. και το γράφω σε ένα άλλο αρχείο το
    "c:\Dps\MyTest.txt"

    το
    "c:\Dps\MyTest.txt" που δημιουργείται είναι σαν την επόμενη γραμμή (UTF-8):
    ΜΑΚΡΥΠΙΔΗΣ ΑΝΔΡΕΑΣ                          ╫μp=ν,Υ@\Π┬Χ║,Υ @

    Ξέρωμε  από  πρίν ότι
    ╫μp=ν,Υ@    =1234567890,12
    \Π┬Χ║,Υ @   =9876543210,34

    Πως πρέπει να το χειριστώ γιά να πάρω τά παραπάνω νούμερα.

    Ευχαριστώ

    **    Private Sub ΔιάβασμαΑρχείουΠελατών1(ByVal dst As String)
            Try
                Dim sql_command As New System.Data.SqlClient.SqlCommand("", connectionOE)
                Dim Fi1 As IO.FileInfo
                Fi1 = My.Computer.FileSystem.GetFileInfo(CType(dst, String))
                Dim gr As Integer = ((Fi1.Length.ToString()) / 1856) + 1
                Dim df As New StreamReader(dst, System.Text.Encoding.GetEncoding(737))
                Dim grs As String = df.ReadToEnd
                df.Close()
                Dim sw As StreamWriter = New StreamWriter("c:\Dps\MyTest.txt")
                Dim i As Integer
                For i = 1 To gr
                    Dim s As String = grs.Substring((832 * i) + (1024 * i), 832 + 1024)
                    If Regex.Replace(s.Substring(1, 14), "[\x00-\x1f]", "").ToString = "" Then Exit For
                    sw.WriteLine(s)
                    ΤιμέςΓραμμήςΠελατών1(s, sql_command)
                Next i
                sw.Close()
            Catch exc As Exception
                MsgBox(exc.Message, MsgBoxStyle.Exclamation, "Λάθος! Ορισμός Αρχείων Πελατών1!")
            End Try
        End Sub

  •  19-01-2008, 11:52 39356 σε απάντηση της 39347

    Απ: Convert-Hex-Asc Ascii

    Παρακαλώ αγνοείστε στην παραπάνω σύνταξη

    Εχω ένα txt αρχείο(dst) που προέρχεται από Dos πρόγραμμα και το περιεχόμενό του είναι σαν την επόμενη γραμμή :
    ‹€‰“ˆƒ†‘ €Œƒ„€‘                 {®GαzŽ?{®GαzŽ @


    και χρησιμοποιήστε αντί αυτού το :

    Εχω ένα txt αρχείο(dst) που προέρχεται από Dos πρόγραμμα και το περιεχόμενό του είναι σαν την επόμενη γραμμή :
    ‹€‰“ˆƒ†‘ €Œƒ„€‘                 {Χ£p=¤,“@\Β•Ί,“ @

    Ευχαριστώ
  •  19-01-2008, 12:30 39357 σε απάντηση της 39347

    Απ: Convert-Hex-Asc Ascii

    Σα να αρχίζω να καταλαβαίνω τί προσπαθείς να κάνεις. Πρέπει να έχεις ένα αρχείο το οποίο περιέχει κείμενο και binary δεδομένα. Θα έλεγα μάλιστα ότι προσπαθείς να διαβάσεις τα data files κάποιας παλιάς εφαρμογής. Αν ήταν όλο κείμενο οι αριθμοί θα είχαν αποθηκευθεί αυτούσιοι. Τα διάφορα encodings επηρεάζουν μόνο τα ελληνικά, όχι τα λατινικά και τους αριθμούς. Συνεπώς το {®GαzŽ?{®GαzŽ @ δεν μπορεί να μετατραπεί από το ένα encoding στο άλλο απλά γιατί δεν είναι κείμενο.

    Για να χειριστείς αυτό το αρχείο θα πρέπει να διαβάζεις κάθε γραμμή και να μετατρέπεις το κομμάτι που είναι κείμενο με την Encoding ενώ το υπόλοιπο θα πρέπει να το χειριστείς με κάποιο άλλο τρόπο. Δεν είναι καθόλου σίγουρο ότι το binary κομμάτι θα έχει ένα από τα standard binary formats για floats.


    Παναγιώτης Καναβός, Freelancer
    Twitter: http://www.twitter.com/pkanavos
  •  19-01-2008, 13:55 39358 σε απάντηση της 39357

    Απ: Convert-Hex-Asc Ascii

    Γι'  αυτό ακριβώς πρόκειται.

    Είναι μία Dos εφαρμογή (Εκδοση 1993-Αγορασμένη) εμπορικής διαχείρησης. Εχω ποιό καινούργιες εκδόσεις εμπορικών εφαρμογών (αγορασμένες) τις οποίες φορτώνω σε Sql . Προσπαθώ να φορτώσω και αυτή την παλιά εφαρμογή γιά να έχω ενιαίο περιβάλλον.

    Τι εννοείς "το υπόλοιπο θα πρέπει να το χειριστείς με κάποιο άλλο τρόπο" ; Με την προυπόθεση ότι η κατασκευάστρια εταιρεία πέθανε.

    Ευχαριστώ

Προβολή Τροφοδοσίας RSS με μορφή XML
Με χρήση του Community Server (Commercial Edition), από την Telligent Systems