专栏名称: PowerBI星球
海量干货,帮你轻松上手 Power BI
目录
相关文章推荐
人民日报  ·  2.5亿中国人拥抱AI意味着什么 ·  2 天前  
新华社  ·  退钱了!明起预约 ·  2 天前  
51好读  ›  专栏  ›  PowerBI星球

PowerQuery如何进行十进制/十六进制的转换?

PowerBI星球  · 公众号  ·  · 2024-08-29 12:18

正文

日常接触到的数据中,常见的是十进制,但有时也会有十六进制,经常有人问它们之间如何相互转换,这篇文章就来看看PowerQuery是如何转换的。

十进制数字转十六进制
对于普通的十进制数字转十六进制,比较简单,因为有个函数可以直接完成转换,它就是Number.ToText,第二参数为“x”或“X”,就是将数字转为十六进制。
以下面这个数据为例:

十六进制转十进制数字
对于16进制的数字,想转成十进制,没有现成的函数,不过我们通过它们的逻辑利用M函数来实现。
以上面转换成16进制的数据为例,如果想转成10进制,添加自定义列:

List.Accumulate(

Text.ToList([十六进制]),

0,

(state, current) =>

state * 16 + Text.PositionOf("0123456789ABCDEF",Text.Upper(current))

)

就可以完成十六进制到十进制的转换:
以上是数字在十进制和十六进制之间的互转,如果是文本字符,如何转成十进制/十六进制的代码呢?
其实每一个字符在计算机系统中都有对应的unicode,在Excel中常用的UNICODE或者UNICHAR函数来实现转换,在PQ中也有相应的函数,它们是Character.ToNumber和Character.FromNumber函数。


文本转十进制
以下面的字符为例,转成十进制用Character.ToNumber函数:

十进制转文本
将十进制转成文本用Character.FromNumber函数:

文本转十六进制
将文本字符转成16进制没有专门的函数,不过有了上面的方法,就可以先将文本转成十进制,然后十进制转成16进制就可以了:

Number.ToText( Character.ToNumber([文本]),"X")


十六进制转文本
这个需求也可以按照上面的思路,先将十六进制转成十进制,然后再转成文本:

不过对于这个需求,还有个更简洁的写法:

Expression.Evaluate(

"""#(#)("&Text.PadStart([文本转十六进制],4,"0")&")"""

)



当你有十进制/十六进制的转换需求时,可以尝试用以上的方法~




PowerBI星球的最新版内容合辑,值得你收藏学习:






请到「今天看啥」查看全文