Fetstil Fetstil Kursiv Understrykning linje färgläggning tabellverk Punktlista Nummerlista Vänster Centrerat högerställt Utfyllt Länk Bild htmlmode
  • Forum & Blog
    • Forum - översikt
      • .Net
        • asp.net generellt
        • c#
        • vb.net
        • f#
        • silverlight
        • microsoft surface
        • visual studio .net
      • databaser
        • sql-server
        • databaser
        • access
        • mysql
      • mjukvara klient
        • datorer och komponenter
        • nätverk, lan/wan
        • operativsystem
        • programvaror
        • säkerhet, inställningar
        • windows server
        • allmänt
        • crystal reports
        • exchange/outlook
        • microsoft office
      • mjukvara server
        • active directory
        • biztalk
        • exchange
        • linux
        • sharepoint
        • webbservers
        • sql server
      • appar (win/mobil)
      • programspråk
        • c++
        • delphi
        • java
        • quick basic
        • visual basic
      • scripting
        • asp 3.0
        • flash actionscript
        • html css
        • javascript
        • php
        • regular expresssion
        • xml
      • spel och grafik
        • DirectX
        • Spel och grafik
      • ledning
        • Arkitektur
        • Systemutveckling
        • krav och test
        • projektledning
        • ledningsfrågor
      • vb-sektioner
        • activeX
        • windows api
        • elektronik
        • internet
        • komponenter
        • nätverk
        • operativsystem
      • övriga forum
        • arbete karriär
        • erbjuda uppdrag och tjänster
        • juridiska frågor
        • köp och sälj
        • matematik och fysik
        • intern information
        • skrivklåda
        • webb-operatörer
    • Posta inlägg i forumet
    • Chatta med andra
  • Konto
    • Medlemssida
    • Byta lösenord
    • Bli bonsumedlem
    • iMail
  • Material
    • Tips & tricks
    • Artiklar
    • Programarkiv
  • JOBB
  • Student
    • Studentlicenser
  • KONTAKT
    • Om pellesoft
    • Grundare
    • Kontakta oss
    • Annonsering
    • Partners
    • Felanmälan
  • Logga in

Hem / Forum översikt / inlägg

Posta nytt inlägg


Gamla VB6 entusiaster, bit i denna...

Postades av 2007-08-01 15:43:55 - John Lundberg, i forum visual basic - allmänt, Tråden har 4 Kommentarer och lästs av 991 personer

Jag har letat efter en funktion som hjälper mig att korta ner långa tal till en siffer / bokstavskombination. ex skulle talet 4820002993884772 istället bli AF235Z4. Jag kan endast använda tecken från 32:a basen + lite till: 0-9, A-Z.

Jag hittade nedan funktion på nätet (riktigt bra för mitt ändamål) som tom tar hänsyn till tecken som I och O som lätt förväxlas med 1 och 0. Men mitt problem är att jag klarar inte göra en Decode funktion, har gett upp men skulle verkligen behöva den.

Finns det någon som känner för att bita i den?

Convert Long Integer to an equivalent Base32 String

' Purpose: Converts an Integer to a Base32 representation
' Inputs:  lngInp = Integer to be converted
'          blnInp = Optional Boolean to indicate whether leading
'                   zeros are included in the result. Default is
'                   to omit the leading zeros.
' Returns: A string representation of the Base32 equivalent
' Comments:
'    In order to avoid confusion with the numbers 1 and 0, the
'    letters I and O are skipped.  I also seem to recall that the
'    letter Q and J should be similarly skipped.  To do this, you
'    must change the Select Case statement accordingly.

Public Function ConvertToBase32( _
                ByVal lngInp As Long, _
                Optional ByVal blnInp As Boolean) As String
   Dim intCnt  As Integer        'Integer counter for loop
   Dim strOut  As String         'temp String holds result
   Dim intOut  As Integer        'holds Integer part of formula
   strOut = ""                   'initialize variable
   If IsMissing(blnInp) Then blnInp = False
   For intCnt = 6 To 0 Step -1
      intOut = Int(lngInp / (32 ^ intCnt))
      Select Case intOut
         Case Is = 0
            If blnInp Then strOut = strOut & "0"
         Case Is < 10            'numbers between 0 and 9
            strOut = strOut & Format(intOut, "0")
         Case Is < 18            'letters between A and H (skip I)
            strOut = strOut & Chr(intOut + 55)
         Case Is < 23            'letters between J and N (skip O)
            strOut = strOut & Chr(intOut + 56)
         Case Else               'letters between P and X
            strOut = strOut & Chr(intOut + 57)
      End Select
      lngInp = lngInp - intOut * (32 ^ intCnt)
   Next intCnt
   ConvertToBase32 = strOut
End Function


Svara

Sv: Gamla VB6 entusiaster, bit i denna...

Postades av 2007-08-01 16:03:50 - Thomas Roman

Jag tror att den här koden är vad du söker. Tänk på att den är gjord för ASP (VBScript) så den bör fungera rakt av men samtidigt så borde du deklarera alla variabler rätt osv.

<code>
Function ValToText(ByVal Nr)
AllowedChars = "0123456789abcdef"
Text = ""
Rest = Nr
Do While Rest > 0
Index = (Rest Mod (Len(AllowedChars) ^ (Len(Text) + 1))) / (Len(AllowedChars) ^ Len(Text))
Text = Mid(AllowedChars, Index +1, 1) & Text
Rest = Rest - (Index * (Len(AllowedChars) ^ (Len(Text) -1)))
Loop
ValToText = Text
End Function

Function TextToVal(ByVal Text)
AllowedChars = "0123456789abcdef"
Nr = 0
X = 0
Do While X < Len(Text)
Nr = Nr + (InStr(AllowedChars, Mid(Text, Len(Text) - X, 1)) - 1) * (Len(AllowedChars) ^ X)
X = X + 1
Loop
TextToVal = Nr
End Function
</code>

Edit: Ändra bara AllowedChars till vilka tecken du vill använda (med eller utan i och o)


Thomas


Svara

Sv:Gamla VB6 entusiaster, bit i denna...

Postades av 2007-08-01 16:16:51 - John Lundberg

Det är precis vad jag söker. TACK!


Svara

Sv: Gamla VB6 entusiaster, bit i denna...

Postades av 2007-08-01 16:47:30 - Tomas Granlund

För den ursprungliga funktionen:

Public Function ConvertFromBase32(strInp As String) As Long
    Dim i As Integer
    Dim result As Long
    result = 0
    For i = Len(strInp) - 1 To 0 Step -1
        result = result + DecodeChar(Mid(strInp, i + 1, 1)) * 32 ^ (Len(strInp) - 1 - i)
    Next i
    ConvertFromBase32 = result
End Function

Public Function DecodeChar(chrInp As String) As Integer
    Select Case Asc(chrInp)
    Case Is <= 57 ' 0-9
        DecodeChar = CInt(chrInp)
    Case Is <= 72 ' A-H
        DecodeChar = Asc(chrInp) - 55
    Case Is <= 79 ' J-N
        DecodeChar = Asc(chrInp) - 56
    Case Else
        DecodeChar = Asc(chrInp) - 57
    End Select
End Function


Svara

Sv:Gamla VB6 entusiaster, bit i denna...

Postades av 2007-08-02 13:39:35 - John Lundberg

Tack Tomas!


Svara

Nyligen

  • 19:55 kick-off med fokus på hälsa?
  • 19:53 kick-off med fokus på hälsa?
  • 16:24 Föreslå en skönhetsklinik online
  • 16:23 Föreslå en skönhetsklinik online
  • 18:42 Hvor finder man håndlavede lamper
  • 18:41 Hvor finder man håndlavede lamper
  • 16:36 Allt du behöver veta om keramiskt
  • 16:14 Vem anlitar man egentligen när tak

Sidor

  • Hem
  • Bli bonusmedlem
  • Läs artiklar
  • Chatta med andra
  • Sök och erbjud jobb
  • Kontakta oss
  • Studentlicenser
  • Skriv en artikel

Statistik

Antal besökare:
Antal medlemmar:
Antal inlägg:
Online:
På chatten:
4 570 725
27 958
271 751
398
0

Kontakta oss

Frågor runt konsultation, rådgivning, uppdrag, rekrytering, annonsering och övriga ärenden. Ring: 0730-88 22 24 | pelle@pellesoft.se

© 1986-2013 PelleSoft AB. Last Build 4.1.7169.18070 (2019-08-18 10:02:21) 4.0.30319.42000
  • Om
  • Kontakta
  • Regler
  • Cookies