Проблемы с конвертацией в VBA Excel- почему HFFF дает -1 долго и как ее решить

Я использую VB в Excel и создаю макрос для расчета бит CRC16. Когда я беру значения из таблицы поиска выше 8000 в FFFF, они дают отрицательные числа. Затем я узнал, что числа ниже этого диапазона будут положительными, а числа в этом диапазоне (8000-FFFF) дадут отрицательный результат, который необходимо преобразовать. Я сталкивался с несколькими подобными функциями, но они не решают мою задачу.

Можно ли сделать преобразование с помощью простой функции, чтобы я мог получить правильный результат.

HFFFF дает -1 для длинной переменной, но я хочу 65535.

Я использовал приведенные здесь функции http://support.microsoft.com/kb/161304 но это не дает мне правильного результата, когда я передаю шестнадцатеричное значение, такое как HFFFF.

1 ответ

Решение

Шестнадцатеричные константы подписаны. Это на самом деле описано в спецификации VBA: http://msdn.microsoft.com/en-us/library/ee199514.aspx

Есть два пути решения этой проблемы:

1) использовать буквенное десятичное число

2) используйте подсказку типа амперсанда, например &HFFFF&

Другие вопросы по тегам