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


Str ---> HEX utan krenel32.dll

Postades av 2003-01-08 07:58:13 - John Lundberg, i forum asp - allmänt, Tråden har 1 Kommentarer och lästs av 486 personer

Hejsan!
Jag vill göra en sträng till HEX tal, men utan att använda kernel32.dll.
Jag har följande kod, men misstänker att det finns ett mkt enklare alternativ.

<code>

Attribute VB_Name = "modHEX"
Option Explicit

Private m_InitHex As Boolean
Private m_ByteToHex(0 To 255, 0 To 1) As Byte
Private m_HexToByte(48 To 70, 48 To 70) As Byte

Private Declare Sub FillMemory Lib "kernel32.dll" Alias "RtlFillMemory" (Destination As Any, ByVal Length As Long, ByVal Fill As Byte)

Function HexToStr(HexText As String, Optional ByVal Separators As Long = 1) As String

Dim a As Long
Dim Pos As Long
Dim PosAdd As Long
Dim ByteSize As Long
Dim HexByte() As Byte
Dim ByteArray() As Byte

'Initialize the hex routine
If (Not m_InitHex) Then Call InitHex

'The destination string is half
'the size of the source string
'when the separators are removed
If (Len(HexText) = 2) Then
ByteSize = 1
Else
ByteSize = ((Len(HexText) + 1) \ (2 + Separators))
End If
ReDim ByteArray(0 To ByteSize - 1)

'Convert every HEX code to the
'equivalent ASCII character
PosAdd = 2 + Separators
HexByte() = StrConv(HexText, vbFromUnicode)
For a = 0 To (ByteSize - 1)
ByteArray(a) = m_HexToByte(HexByte(Pos), HexByte(Pos + 1))
Pos = Pos + PosAdd
Next

'Now finally convert the byte
'array to the return string
HexToStr = StrConv(ByteArray, vbUnicode)

End Function
Private Sub InitHex()

Dim a As Long
Dim b As Long
Dim HexBytes() As Byte
Dim HexString As String

'The routine is initialized
m_InitHex = True

'Create a string with all hex values
HexString = String$(512, "0")
For a = 1 To 255
Mid$(HexString, 1 + a * 2 + -(a < 16)) = Hex(a)
Next
HexBytes = StrConv(HexString, vbFromUnicode)

'Create the Str->Hex array
For a = 0 To 255
m_ByteToHex(a, 0) = HexBytes(a * 2)
m_ByteToHex(a, 1) = HexBytes(a * 2 + 1)
Next

'Create the Str->Hex array
For a = 0 To 255
m_HexToByte(m_ByteToHex(a, 0), m_ByteToHex(a, 1)) = a
Next

End Sub
Function StrToHex(Text As String, Optional Separator As String = " ") As String

Dim a As Long
Dim Pos As Long
Dim Char As Byte
Dim PosAdd As Long
Dim ByteSize As Long
Dim ByteArray() As Byte
Dim ByteReturn() As Byte
Dim SeparatorLen As Long
Dim SeparatorChar As Byte

'Initialize the hex routine
If (Not m_InitHex) Then Call InitHex

'Initialize variables
SeparatorLen = Len(Separator)

'Create the destination bytearray, this
'will be converted to a string later
ByteSize = (Len(Text) * 2 + (Len(Text) - 1) * SeparatorLen)
ReDim ByteReturn(ByteSize - 1)
Call FillMemory(ByteReturn(0), ByteSize, Asc(Separator))

'We convert the source string into a
'byte array to speed this up a tad
ByteArray() = StrConv(Text, vbFromUnicode)

'Now convert every character to
'it's equivalent HEX code
PosAdd = 2 + SeparatorLen
For a = 0 To (Len(Text) - 1)
ByteReturn(Pos) = m_ByteToHex(ByteArray(a), 0)
ByteReturn(Pos + 1) = m_ByteToHex(ByteArray(a), 1)
Pos = Pos + PosAdd
Next

'Convert the bytearray to a string
StrToHex = StrConv(ByteReturn(), vbUnicode)

End Function


</code>


Svara

Sv: Str ---> HEX utan krenel32.dll

Postades av 2003-01-08 11:00:52 - Andreas Hillqvist

Om du ska ha den i ASP har jag skrivit en funktion.
<code>
Function StrToHex(Text As String, Optional Separator As String = " ") As String
Dim Pos 'As Long
Dim Size 'As Long
Dim Index 'As Long
Dim Length 'As Long
Dim LengthSep 'As Long

Dim Result 'As String

Pos = 1
Length = Len(Text)
LengthSep = Len(Separator)

Select Case LengthSep
Case 0
Size = Length * 2
StrToHex = Space(Size)
For Index = 1 To Length
Mid(StrToHex, Pos) = Right("0" & Hex(Asc(Mid(Text, Index, 1))), 2)
Pos = Pos + 2
Next
Case 1
Size = Length * 3 - 1
StrToHex = String(Size, Separator)
For Index = 1 To Length
Mid(StrToHex, Pos) = Right("0" & Hex(Asc(Mid(Text, Index, 1))), 2)
Pos = Pos + 3
Next
Case Is > 1
Size = Length * 2 + (Length - 1) * LengthSep
StrToHex = Space(Size)
For Index = 1 To Length
Mid(StrToHex, Pos) = Right("0" & Hex(Asc(Mid(Text, Index, 1))), 2) & Separator
Pos = Pos + 2 + LengthSep
Next
End Select
End Function
</code>
Om du inte har någon separator eller hård kodad. Kan du ju strippa ner funktionen.


Svara

Nyligen

  • 08:28 Butiksskyltar: Hur upplever utbude
  • 22:31 Slappna av
  • 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

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 812
27 960
271 761
597
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