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


Hex$ räcker inte till

Postades av 2005-07-18 15:47:41 - Peter Bladh, i forum visual basic - allmänt, Tråden har 6 Kommentarer och lästs av 704 personer

Hej,

Hex eller Hex$ är ju jättebra om man skall konvertera ett decimaltal till hex, men hur gör man om det inte räcker till?
Det verkar finnas ett tak på 0xFFFFFFFF. Över det blir det overflow.

/peter


Svara

Sv: Hex$ räcker inte till

Postades av 2005-07-18 16:31:09 - Johan Svensson

Då får du köra en loop.

Ta reda på vilket värde som max kan hanteras och gör så här:

1. Lagra ditt ursprungliga tal i en variabel; Ursprung
2. Skapa en tom strängvariabel; Resultat
3. I en temporär variabel, Temp, så lagrar du den numeriska svaret av Ursprung AND MaxVärdet
4. Nu lägger du över Hex$(Texp) i din Resultat. OBS! Lägg din nya konvertering FÖRST så att Resultat = Hex$(Temp) & Resultat
5. Dividera Ursprung med (MaxVärdet + 1) och släng bort decimaler, lagra nya värdet i Urpsrung
6. Om värdet är större än noll så upprepa från punkt 3
7. Klart


Lycka till!

// Johan


Svara

Sv:Hex$ räcker inte till

Postades av 2005-07-19 08:59:55 - Peter Bladh

Hej,

>> 3. I en temporär variabel, Temp, så lagrar du den numeriska svaret av Ursprung AND MaxVärdet

Det blir overflow på denna rad. Min implementation ser ut så här (samtliga variabler är doubles):

nTmp = nNumber And nMaxValue


/peter


Svara

Sv: Hex$ räcker inte till

Postades av 2005-07-19 09:17:27 - Johan Svensson

Då har du fel datatyp på din temporära variabel. Om du kan lagra data i nNumber så kan du lagra ett mindre värde i nTemp. Se till att dessa två är av samma datatyp.

// Johan


Svara

Sv:Hex$ räcker inte till

Postades av 2005-07-19 09:40:19 - Peter Bladh

Tack, men jag valde en annan approach:

För den som är intresserad:

Public Function CDecToHex(nNumber As Double) As String
Dim sResult As String
Dim nQuotient As Double
Dim nReminder As Integer

nNumber = RemoveDecimals(nNumber)

While nNumber > 0
nQuotient = nNumber / 16
nQuotient = RemoveDecimals(nQuotient)
nReminder = nNumber - (nQuotient * 16)
sResult = Hex$(nReminder) & sResult

nNumber = nQuotient
Wend

CDecToHex = sResult
End Function


Anledningen till specialhanteringen kring nReminder är att Mod inte fungerar så bra på så stora tal.

/peter


Svara

Sv: Hex$ räcker inte till

Postades av 2005-07-19 12:03:51 - Johan Svensson

Tjusigt!

En liten fundering, varför tar du i steg om 16? Jag antar för att du vill ha ett hex-tecken i taget. Men jag tror du får bättre prestanda om du kör med 32-bitars steg istället.

Och om du kör AND istälelt för division så får du också bättre prestanda. I ditt fal så kör du /16, men kan lika gärna köra AND 15 och sedan köra en bitskift.

// Johan


Svara

Sv:Hex$ räcker inte till

Postades av 2005-07-19 12:49:13 - Niklas Jansson

<b>>I ditt fal så kör du /16, men kan lika gärna köra AND 15 och sedan köra en bitskift. </b>
Fast är det double är det nog lite besvärligt... lämpligast i så fall är väl snarast att använda heltalsdivision - "\"


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 721
27 958
271 751
5 642
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