информационная безопасность
без паники и всерьез
 подробно о проекте
Все любят медСетевые кракеры и правда о деле ЛевинаЗа кого нас держат? Rambler's Top100
BugTraq.Ru
Русский BugTraq
 Знакомьтесь: проект Namecoin, будущий... 
 Основы защиты данных от разрушения.... 
 Секреты DPAPI 
 Adobe все-таки выпустит бесплатные... 
 CGI-уязвимость в PHP: второй подход... 
 Adobe пропатчила Shockwave, Flash,... 
главная книги soft обзор RSN блог библиотека закон бред форум dnet о проекте
bugtraq.ru / форум / FAQ / sysadmin
FAQ
главная
операционные системы
sysadmin
программирование
теория
общие вопросы

Add to Google



.NET Сетевое программирование для профессионалов

Обработка чисел с лидирующими нулями в командном процессоре cmd.exe
Den
Опубликовано: Den, 04.10.05 20:19

Случайно обнаружился интересный глюк в cmd.exe на MS Windows 2000 Server, проявляющийся при попытке произвести арифметическую операцию с двузначными и более числами, предваренными лидирующими нолями, с последующим присвоением переменной окружения.

Попробуйте:
set /a test=0054-1
set /a test=0111
set /a test=4*0110

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

Причина - правила интерпретации числовых констант, которые могут быть либо десятичными (17), либо шестнадцатиричными (0x11), либо восьмиричными (021).

WORKAROUND:
Глюка можно обойти, если использовать следующее выражение для отбрасывания лидирующих нолей:
for /F "tokens=* delims=0" %i in ("0110") do set /a test=4*%i



обсудить  |  все отзывы (15)

[3793]



Rambler's Top100
Рейтинг@Mail.ru

Hardwarez 468x60


  Copyright © 2001-2012 Dmitry Leonov   Page build time: 0 s   Design: Vadim Derkach