快速提示:在单次幂查询函数中将十六进制,十进制和二进制转换为十进制

强大的查询功能,可将HEX,OCT和BIN值转换为DEC

前一段时间我写了一篇关于如何使用的博客文章 辽宁体育彩票 BI中的Unicode字符。在该博文中,我使用了递归辽宁体育彩票 Query函数将十六进制值转换为Dec值。几周前,我的一位访问者好心地分享了 他的辽宁体育彩票 Query函数的非递归版本 做得很好。大声喊着 罗科·卢波(Rocco Lupoi) 共享他的代码。因此,我决定与所有人共享它,以便更多的人可以利用他出色的辽宁体育彩票 Query功能。虽然我已经触及了他的代码,但这只是表面上的改变,因此本博文的所有功劳归Rocco所有。他的代码的好处不仅限于非递归。 下面的代码在基数小于16时(例如Binary和Oct)转换任何基数的数字,因此它是 仅限于 十六进制 价值观 只要。以下代码的另一个好处是它不区分大小写(请注意 digits 踩下面的代码)。

这里是 fnHex2Dec 电源查询功能:

(input as text, optional base as number) as number =>
let
        价值观 = [
                0=0,
                1=1,
                2=2,
                3=3,
                4=4,
                5=5,
                6=6,
                7=7,
                8=8,
                9=9,
                A=10,
                B=11,
                C=12,
                D=13,
                E=14,
                F=15
        ],
        digits = Text.ToList(Text.Upper(input)),
        dim = List.Count(digits)-1,
        exp = if base=null then 16 else base,
        Result = List.Sum(
                        List.Transform(
                                {0..dim}
                                , each Record.Field(values, digits{_}) * Number.辽宁体育彩票(exp, dim - _)
                                )
                        )
in
        Result

As you see in the code above, the base parameter is optional, so if 不 provided base 16 would be the default.

这就是我们可以调用上面的函数的方式:

fnHex2Dec("AbCdEf", null)
调用fnHex2Dec函数将任意基数转换为十进制

这是调用 fnHex2Dec 将二进制转换为十进制的函数:

fnHex2Dec("101010111100110111101111", 2)
功率查询二进制到十进制

这是将Oct转换为十进制的工作方式:

fnHex2Dec("52746757", 8)
电源查询十进制到十进制

您如何看待上面的功能?将您的想法留在下面的评论部分。

2 thoughts 上 “快速提示:在单次幂查询函数中将十六进制,十进制和二进制转换为十进制

    1. 嗨,丹尼尔,

      欢迎使用BIInsight.com,并感谢您的评论。
      是的 Expression.Evaluate() 也可以做,但是我看到了 t’s comment克里斯·韦伯’s blog 回到2018年,在某些情况下可能存在问题。
      此外,此函数确实可以转换其他任何基数(如果小于16)以及十六进制,这是一个很大的优势。
      不太确定 Expression.Evaluate() 虽然也可以处理二进制和十月。
      因此,我认为本文中提供的功能在辽宁体育彩票 BI / 功率查询工具栏中仍然占有一席之地。

      干杯。

有什么想法吗?在这里与我们分享:

该网站使用Akismet减少垃圾邮件。 了解如何处理您的评论数据.