Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - Общий форум

Страница: 1 |

 

  Вопрос: Помогите с системой Счисления !!! Добавлено: 08.08.07 15:12  

Автор вопроса:  Aganemnam | Web-сайт: None | ICQ: 269000203 
Доброго времени суток, Программисты!
у меня есть токой вопрос:
 есть число, скажем : 02672550300863620295
Надо перевести ето число в 16 -тиричную систему счисления! Пробовал так:
x=hex("02672550300863620295")
Пишет "Overflow" (Переполнение)!!
Что делать ???? помогите с кодом!!! длина числа минимальная 20 символов!!! спасибо за внимание!

Ответить

  Ответы Всего ответов: 8  

Номер ответа: 1
Автор ответа:
 ZagZag



ICQ: 295002202 

Вопросов: 87
Ответов: 1684
 Профиль | | #1 Добавлено: 08.08.07 16:04
Что-то типа:
Public Function HexEx(strHexString As String) As String
Dim lngIndex As Long, lngCount As Long
    Const HexChars = "0123456789ABCDEF"
    strHexString = Replace(strHexString, " ", "";)
    If Len(strHexString) Mod 2 = 1 Then Exit Function
    strHexString = UCase(strHexString)
    
    HexEx = ""
    lngCount = Len(strHexString) / 2
    For lngIndex = 1 To lngCount
        HexEx = HexEx + Chr(16 * (InStr(1, HexChars, Mid$(strHexString, lngIndex * 2 - 1, 1)) - 1) + (InStr(1, HexChars, Mid$(strHexString, lngIndex * 2, 1)) - 1))
    Next
End Function

Ответить

Номер ответа: 2
Автор ответа:
 Aganemnam



ICQ: 269000203 

Вопросов: 2
Ответов: 5
 Web-сайт: None
 Профиль | | #2
Добавлено: 09.08.07 08:57
Увожаемый ZagZag , вы сами пробовали этот код на исполнение ??? просто у меня эта функция ничего не возвращяет!!
Вот что я написал :

Private Sub Command1_Click()
Text2.Text = HexEx(Text1.Text)
End Sub
Public Function HexEx(strHexString As String) As String
Dim lngIndex As Long, lngCount As Long
    Const HexChars = "0123456789ABCDEF"
    strHexString = Replace(strHexString, " ", "";)
    If Len(strHexString) Mod 2 = 1 Then Exit Function
    strHexString = UCase(strHexString)
     
    
    lngCount = Len(strHexString) / 2
    For lngIndex = 1 To lngCount
        HexEx = HexEx + Chr(16 * (InStr(1, HexChars, Mid$(strHexString, lngIndex * 2 - 1, 1)) - 1) + (InStr(1, HexChars, Mid$(strHexString, lngIndex * 2, 1)) - 1))
    Next
End Function

После этого мой Текстбокс2 ="" (Пусто!)

мы бы не могли пообщятся в онлайн режиме !!!
Мой UIN 269000203 ник Aganemnam!!! спасибо за внимание!

Ответить

Номер ответа: 3
Автор ответа:
 Aganemnam



ICQ: 269000203 

Вопросов: 2
Ответов: 5
 Web-сайт: None
 Профиль | | #3
Добавлено: 09.08.07 09:03
Могу привести примеры:
1-исходное число 2 - число в НЕХ формате!


02085983972146825535 1CF2E75EE2F8493F
06942430260623839332 6058778A1A681064
01620636916427145303 167DA8B061864057

Эти числа кодированы простым windows-ским калькулятором!! Что нить дельное напешите плз!!
На Visual Basic!!(другие языки только-только изучаю!) еще раз спасибо !

Ответить

Номер ответа: 4
Автор ответа:
 K-Unit90



Вопросов: 4
Ответов: 22
 Web-сайт: www.UniSite-net.narod.ru
 Профиль | | #4
Добавлено: 09.08.07 09:08
Про переполнение... Там скорее всего переменную надо было изменить на
более вместительную. Попробуй as Single

Ответить

Номер ответа: 5
Автор ответа:
 Aganemnam



ICQ: 269000203 

Вопросов: 2
Ответов: 5
 Web-сайт: None
 Профиль | | #5
Добавлено: 09.08.07 09:37
K-Unit90 !!! пробовал!!
Та же фигня! тока как я понял это дело не типе переменной а в команде "HEX(переменная)"! по моему его возможности сильно ограничены!! точнее от 58,000,000,000 до - 58,000,000,000!
а мой диапазон никак не входит в этот!!
У меня встречный вопрос :
Как организован windows-ский калькулятор??? он же переводит токие числа!!! примеры переведениы им!
Thanks a lot!

Ответить

Номер ответа: 6
Автор ответа:
 K-Unit90



Вопросов: 4
Ответов: 22
 Web-сайт: www.UniSite-net.narod.ru
 Профиль | | #6
Добавлено: 09.08.07 09:49
Хм... Ну калькулятор винды по-моему для вычисления огромный чисел
использует переменные типа Long or Single... Попробуй лонг :) Тоже
неплохое вместилище для чисел, но Сингл по-моему лучше...

Ответить

Номер ответа: 7
Автор ответа:
 ZagZag



ICQ: 295002202 

Вопросов: 87
Ответов: 1684
 Профиль | | #7 Добавлено: 09.08.07 15:21
Я привел код не тот. То что я привел переводит HEX в массив байтов.
В твоем случае наверное не обойтись без длинной арифметики.

Ответить

Номер ответа: 8
Автор ответа:
 el-paso



Вопросов: 0
Ответов: 56
 Профиль | | #8 Добавлено: 10.08.07 16:48

Function dec_to_hex$(dec$)
    '
    Dim c_dec$, n_dec$
    Dim s_dec&
    Dim result$
    '
    c_dec = dec
    result = ""
    '
    Do
        Dim i&
        Dim i_max&
        '
        i_max = Len(c_dec)
        n_dec = ""
        s_dec = 0
        '
        For i = 1 To i_max
            '
            s_dec = CLng(s_dec & Mid$(c_dec, i, 1))
            '
            n_dec = n_dec & (s_dec \ 16)
            s_dec = s_dec Mod 16
            '
        Next i
        '
        Do While Mid$(n_dec, 1, 1) = "0": n_dec = Mid$(n_dec, 2): Loop
        c_dec = n_dec
        '
        result = Hex$(s_dec) & result
        '
    Loop Until c_dec = ""
    '
    dec_to_hex = result
    '
End Function



(c) 2007. ostgals.

Есси нужны комменты, стучите в Скайп - ник: ostgals

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам