1 / 1 / 0
Регистрация: 27.12.2007
Сообщений: 157

API функция для конвертации числа в Hex

18.05.2008, 16:26. Показов 1688. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Znaet li kto, est'li funkcii API dlja convertacii chisla v hex, standartnaja VB ne podkhodit Hex(213622402953199) vidaet Overflow, nado chto-to tipa _i64toa()

Zaranee blagodaren.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
18.05.2008, 16:26
Ответы с готовыми решениями:

API для конвертации теста DOS<-> win
Люди добрые подскажите сабж. Помню что есть такой, а как зовется забыл. Спасибо

Создать Таблицу конвертации для конвертации рублей России в разные валюты с учетом комиссии.
Помогите написать программу, пожалуйста Создать: “Таблица конвертации” для конвертации рублей России в разные валюты с учетом...

Функция для обмена HEX данными через COM порт
Помогите реализовать функцию работы с COM портом в консольном приложении. Алгоритм такой: Слушаем порт и при появлении HEX команды,...

5
 Аватар для palva
4278 / 2970 / 693
Регистрация: 08.06.2007
Сообщений: 9,930
Записей в блоге: 5
18.05.2008, 23:06
Дык overflow выдается из-за очень длинного числа, а не из-за функции. Т. е. в бейсике нет переменных, которые могли бы хранить числа такой точности. Приходится хранить отдельно старшую и младшую части в переменных типа Long.

А функция, которая может перевести в Hex имеется в API. Это wsprintf. Только формата для работы с __int64 я что-то в хелпе для нее не нашел.
0
1 / 1 / 0
Регистрация: 27.12.2007
Сообщений: 157
19.05.2008, 09:06  [ТС]
double i variant mojet khranit'.
A wsprintf ja ne nashel ona v kakoj biblioteke.
0
 Аватар для palva
4278 / 2970 / 693
Регистрация: 08.06.2007
Сообщений: 9,930
Записей в блоге: 5
19.05.2008, 11:38
Здесь я неправ. Конечно, хранить может, но 16-ричный вид числа Double - это вряд ли то, что вам нужно. wsprintf находится в USER32.DLL в Win2000 ее алиас wsprintfA. Попробовал я к ней обратиться таким образом:

Private Declare Function wsprintf Lib 'user32' Alias 'wsprintfA' _
(lpOut As Byte, ByVal lpFmt As String, ByVal proba As Long) As Long

Private Sub Form_Load()
Dim lll As Long, buf(20) As Byte
lll = 123456789
wsprintf buf(0), '%lX', lll
s = ''
For i = 0 To 20
If buf(i) = 0 Then Exit For
s = s & Chr(buf(i))
Next
Debug.Print s
End Sub

но получил Bad DLL calling convention. То есть она, по-видимому, была написана в соглашениях cdecl. Не знаю можно ли к таким функциям обращаться из бейсика. Может быть, имеется вариант этой функции с типом pascal, не знаю.
0
0 / 0 / 0
Регистрация: 07.04.2008
Сообщений: 99
23.05.2008, 05:40
Обращаться к таким функциям нельзя даже через TLB, проверено. В VB работать с Сишным рантаймом вообще не рекомендуется - API есть API, а C++ - это все-таки C++, для него только свои соглашения действуют.

Армен, а где ты ухитрился в VB взять такое число? Его ведь только Currency содержать может, а Hex() неявно от тебя преобразует свой аргумент в Long - здесь ты и ловишь переполнение.

Попробуй так: переведи число в массив байтов. Если ты его получаешь от API, то можно попытаться подменить в декларации тот тип, что в оригинале, на Byte(). Не уверен, что прокатит, но вдруг получится?

Или запихни его у себя в Currency, а потом разбей на 2 лонга методами целого деления (старшая часть) и остатка от деления (младшая). Или вообще напролом - через RtlMoveMemory(...) - эта штука все съест, ей только корректный указатель давай.

P.S. By the way: ты там случайно не с криптографией мутишь? Если да, то буду рад посотрудничать. Помогу чем смогу.
0
0 / 0 / 0
Регистрация: 07.04.2008
Сообщений: 99
23.05.2008, 05:42
Да, кстати, palva: здесь нужен stdcall, а не pascal (если, конечно, это не одно и то же .
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
23.05.2008, 05:42
Помогаю со студенческими работами здесь

Маска ввода для числа в HEX
Подскажите возможно ли в текстовом или числовом поле создать маску ввода для 4-х значного числа в формате HEX. 0000 - дает вводить...

Как разбить одно число HEX число на два числа HEX ?
Задача в том, что бы одно число в виде HEX (к примеру 0xD681) разбить на 2 числа HEX (из 0xD681 - &gt; 0xD6 и 0x81) именно что бы вот так...

Функция конвертации из Bitarray в Uint
Здравствуйте! Хотел бы попросить помощи в создании функции, которая конвертирует массив Бит в 4 байтное число, т.е. из Bitarray в Uint. ...

API функция для создания ярлыка файла
Народ кто знает апишную функцию для создания ярлыка файла??? На www.vbapi.com не нашел что-то! Заранее спасибо!

API-функция для вывода системных данных
Господа, подскажите, пожалуйста, API-функции для 1) Вывода на экран версии операционной системы; 2) Вывода на экран имени контроллера...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

Новые блоги и статьи
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru