Avatar billede virtualdurran Nybegynder
01. februar 2006 - 21:03 Der er 16 kommentarer og
1 løsning

Konverter fra Ascii til Char

Jeg har et problem med at få konverteret nogle værdier jeg modtager fra en maskine i ascii kode. Jeg får fx 3132, som jo vil blive til tallet 12, men jeg kan ikke få computeren til at vise tallet 12. Jeg har prøvet med VBA.Asc og VBA.Hex på forskellige måder, men synes ikke jeg kan se mig ud af det. Nogen der har en ide til hvad jeg skal gøre?
Forresten arbejder jeg i Excel.

På forhånd tak
Avatar billede bak Forsker
01. februar 2006 - 21:31 #1
Dim st As String
Dim x As Long
st = "3132"
x = CLng(Chr(CLng("&H" & Left(st, 2))) & Chr(CLng("&H" & Right(st, 2))))
MsgBox x
Avatar billede virtualdurran Nybegynder
01. februar 2006 - 21:49 #2
Du er simpelthen INTET mindre end worldchamp!!! Takker mange gange....hvis du vil have nogle point også, kan du jo lige smide et svar! :)
Avatar billede bak Forsker
01. februar 2006 - 21:52 #3
ok :-)
Avatar billede bak Forsker
01. februar 2006 - 21:59 #4
du kan da også lige få den som formel. (hexværdi i A1)

=VÆRDI( TEGN(HEX.TIL.DEC(VENSTRE(A1;2))) & TEGN(HEX.TIL.DEC(HØJRE(A1;2))))
Avatar billede virtualdurran Nybegynder
01. februar 2006 - 22:03 #5
Lige et til spørgsmål. når jeg nu skriver 3030, så giver den mig kun et 0. Jeg skal gerne have vist ALLE de tegn der bliver lavet om, også selv om det er 0. Kan jeg gøre det ved at lave CLng om til Cstr?
Avatar billede bak Forsker
01. februar 2006 - 22:22 #6
Jeps, du behøver faktisk ikke den første clng så.
x = Chr(CLng("&H" & Left(st, 2))) & Chr(CLng("&H" & Right(st, 2)))
Avatar billede bak Forsker
01. februar 2006 - 22:23 #7
x skal så s'føli ikke være en long, men en variant eller string
Avatar billede virtualdurran Nybegynder
01. februar 2006 - 22:32 #8
Der er så bare et problem. Så længe jeg viser den i en msgbox virker det fint, men smider jeg den ind i en celle, skriver den jo kun et 0. Kan der også gøres noget ved det? noget med at konvertere den til en tekst eller sådan noget?
Avatar billede bak Forsker
01. februar 2006 - 22:34 #9
[A1] = "'" & Chr(CLng("&H" & Left(st, 2))) & Chr(CLng("&H" & Right(st, 2)))
Avatar billede bak Forsker
01. februar 2006 - 22:35 #10
Bemærk den lille apostrof, der sørger for at det bliver tekst.
Alternativt skal du i forvejen eller under programafviklingen formatere cellen som tekst.
Avatar billede virtualdurran Nybegynder
01. februar 2006 - 23:03 #11
Hvad skal variablen så være defineret som?
Avatar billede virtualdurran Nybegynder
01. februar 2006 - 23:24 #12
Bare glem det. Har fundet ud af det. Men jeg kan åbenbart blive ved med at finde ud af spørgsmål. Hvis jeg nu har et varenr, på 6 tal, som jeg laver om til ascii og gemmer det i 1 variabel, så jeg fx får 303335343132. Det vil jo give nummeret 035412. Kan jeg få den til at teste dem 2 og 2. Kan se på din anden kode at du først tester 2 fra venstre og så 2 fra højre, men den går jo ikke rigtig her!?

håber ikke du stadig vil hjælpe. Vil gerne give flere point hvis det er! :)
Avatar billede kabbak Professor
02. februar 2006 - 00:14 #13
dim X as variant
St ="303335343132"
For I = 1 to len(st) step2
X = X &  Chr(CLng("&H" & mid(st,I, 2)))
next
A1] = "'" & X
Avatar billede kabbak Professor
02. februar 2006 - 00:14 #14
hov der var fejl

Dim X As Variant
st = "303335343132"
For I = 1 To Len(st) Step 2
X = X & Chr(CLng("&H" & Mid(st, I, 2)))
Next
[A1] = "'" & X
Avatar billede bak Forsker
02. februar 2006 - 00:19 #15
st = "30313233"
x = "'"
For i = 1 To Len(st) Step 2
    x = x & Chr(CLng("&H" & (Mid(st, i, 2))))
Next
[a1] = x
Avatar billede virtualdurran Nybegynder
02. februar 2006 - 00:40 #16
Jeg vil gerne have sådan at jeg kan skrive et tal ind i en msgbox, lave det om til ascii kode, til hex og så tilbage til det originale tal. Jeg har lavet følgende kode ud fra det du allerede har lavet til mig, men det virker ikke.

A = InputBox("dm1206: ", "Test") 'dm(1206)

For B = 1 To Len(A) Step 1
Y = Y & Asc(CLng("&H" & Mid(A, B, 1)))
Next

Y = VBA.Hex(Y)

For I = 1 To Len(A) Step 2
X = X & Chr(CLng("&H" & Mid(Y, I, 2)))
Next

MsgBox X

Hvad laver jeg forkert?
Avatar billede virtualdurran Nybegynder
02. februar 2006 - 01:02 #17
Nu har jeg siddet og bikset lidt med det, og jeg er kommet frem til denne kode (som virker):

Dim A As Variant
Dim X As Variant
Dim Y As Variant
Dim Z As Variant

A = InputBox("dm1206: ", "Test") 'dm(1206)

For B = 1 To Len(A) Step 1
Y = Y & Asc(CLng("&H" & Mid(A, B, 1)))
Next

[b2] = "'" & Y

For C = 1 To Len(Y) Step 2
Z = Z & Hex(CLng(Mid(Y, C, 2)))
Next

[b3] = "'" & Z

For I = 1 To Len(Z) Step 2
X = X & Chr(CLng("&H" & Mid(Z, I, 2)))
Next

MsgBox X

[a1] = "'" & X

MEN er det HELT korrekt?
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester