2015-10-21 3 views
3

im чтение в некоторых данных, где числа, которые были первоначально шестнадцатеричными, считались десятичными.Десятичное значение от шестнадцатеричного до десятичного

Поскольку эти шестнадцатеричные примеры также являются действительными десятичными числами, когда я прочитал их в текстовом файле, SAS прочитал тогда как десятичный.

Примерами являются 53 и 68, которые являются шестнадцатеричными числами для 83 и 104 десятичных знаков соответственно.

Использование hex2. формат преобразует 53 и 68 в шестнадцатеричные числа (например, 68 - 44), чего я не хочу.

Есть ли возможность получить SAS, чтобы распознать 53 и 68 как шестнадцатеричный, не пытаясь преобразовать их в шестнадцатеричный?

ответ

3

Используйте информацию hexw.. Напомним, что информационные и форматы различны.

Informat

информ представляет собой тип элемента SAS языка, который применяет шаблон или выполняет команды для значения данных следует читать как входа.

Формат

Формат представляет собой тип элемента SAS языка, который применяется шаблон для или выполняет команды для значения данных, которые будут отображаться или записываться как выход.

Хороший способ помнить:

Форматкак вы увидеть

информа как SASв ternally видит

Пояснение

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

01JAN2015

Само по себе, это просто строка символов. SAS не знает, как выполнить математику на 01JAN2015, и она будет автоматически считывать значение в качестве символьной строки. Но, SAS делает знает, как интерпретировать то, что представляет эта строка. Вам просто нужно сказать SAS, чтобы интерпретировать его определенным образом.

Для того чтобы SAS выполняла математику по датам, используется контрольная дата 1/1/1960. Применяя informat date9., SAS может понять, что строка представляет 20 089-й день с 1 января 1960 года.Вывод будет выглядеть так:

20089

Это трудно для людей, чтобы читать. Вы можете применить к нему формат mmddyy10., чтобы вы могли его прочитать, но SAS также может это понять. Формат не изменит того, что видит SAS. Значение по-прежнему сохраняется как десятичное число, но способ его отображения более читабельен.

**To SAS**   **To you** 
date    date 
20089    01/01/2015 

В вашем случае SAS знает, что значение, которое вы читаете, является числовым. Он будет автоматически считать, что это десятичное число, но мы знаем, что это не так.

Следуя приведенной выше логике, мы хотим применить информатив к числовым значениям, чтобы SAS интерпретировал значения как шестнадцатеричные, а не десятичные.

data want; 
    informat hex_value hex2.; 
    input hex_value; 
datalines; 
53 
68 
; 
run; 

Ваш стол будет выглядеть так:

hex_value 
83 
104 

Если применить формат hex2., вы увидите таблицу вывода в виде шестнадцатеричной снова. Поскольку мы уже интерпретировали эту ценность, мы просто меняем то, как она выглядит на вас, но не так, как она выглядит на SAS:

**To SAS**   **To you** 
hex_value   hex_value 
83     53 
104    68