首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >十进制到十六进制到十进制

十进制到十六进制到十进制
EN

Stack Overflow用户
提问于 2015-10-21 07:30:17
回答 1查看 2.6K关注 0票数 3

我在读一些数据,在这些数据中,原本是十六进制的数字被读成十进制。

由于这些十六进制示例也都是有效的十进制数字,当我从文本文件中读取它们时,SAS已经读取,然后作为十进制。

例子是53和68,它们分别是83小数和104小数的十六进制数。

使用hex2。格式将53和68转换为十六进制数(例如,68变为44 ),这不是我想要的。

有没有办法让SAS识别53和68为妖术,而不试图将它们转化为妖术?

EN

回答 1

Stack Overflow用户

发布于 2015-10-21 14:08:45

使用informat hexw.。回想一下,信息和格式是不同的。

信息格式

informat是SAS语言元素的一种类型,它将模式应用于或执行数据值作为输入读取的指令。

格式

格式是SAS语言元素的一种类型,它将模式应用于或执行数据值显示或写入为输出的指令。

一种很好的记忆方式:

格式的是您如何看待它的。

informat是中的SAS 如何看待它的。

解释

在格式中用于将中的值转换为SAS可以适当地执行数学操作的内容。例如,

01JAN2015

就其本身而言,它只是一个字符串。SAS不知道如何在01JAN2015上执行数学运算,它将自动以字符串的形式读取值。但是,SAS确实知道如何解释该字符串所代表的内容。你只需要告诉SAS以某种方式来解释它。

对于SAS在日期上做数学计算,它使用1/1/1960的引用日期。通过应用informat date9.,SAS能够理解字符串表示自1960年1月1日以来的第20,089天。然后,输出看起来是这样的:

20089

这对人们来说很难读。您可以将mmddyy10.格式应用于此,以便您可以读取它,但SAS也可以理解它。格式不会改变SAS看到的内容。该值仍然以十进制形式存储,但它向您显示的方式更易读。

代码语言:javascript
复制
**To SAS**         **To you**
date               date
20089              01/01/2015

在您的示例中,SAS知道您正在读取的值是数字。它会自动地假设它是十进制,但我们知道事实是它不是。

按照上述逻辑,我们希望对数值应用informat,这样SAS将把值解释为十六进制,而不是小数。

代码语言:javascript
复制
data want;
    informat hex_value hex2.;
    input hex_value;
datalines;
53
68
;
run;

你的桌子看起来是这样的:

代码语言:javascript
复制
hex_value
83
104

如果应用hex2.格式,您将再次看到输出表为十六进制。因为我们已经解释了这个值,所以我们只是在改变它在您看来的样子,而不是它在SAS中的样子:

代码语言:javascript
复制
**To SAS**         **To you**
hex_value          hex_value
83                 53
104                68
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33253412

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档