информационная безопасность
без паники и всерьез
 подробно о проекте
Rambler's Top100Spanning Tree Protocol: недокументированное применениеПортрет посетителяВсе любят мед
BugTraq.Ru
Русский BugTraq
 Анализ криптографических сетевых... 
 Модель надежности двухузлового... 
 Специальные марковские модели надежности... 
 Умер Фредерик Брукс 
 Обход андроидной блокировки 
 Dropbox посеял 130 репозиториев 
главная обзор RSN блог библиотека закон бред форум dnet о проекте
bugtraq.ru / форум / FAQ / sysadmin
FAQ
главная
операционные системы
sysadmin
программирование
теория
общие вопросы





Обработка чисел с лидирующими нулями в командном процессоре 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)

[7757]



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



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