c# - C# 中的 float 到十六进制

标签 c# hex decimal bin

谷歌搜索我发现关于如何将数字转换为十六进制浮点单精度的信息并不多。共有三个清晰的步骤: 1 转换整个二进制部分。 2 添加逗号并将小数部分转换为二进制。 3 将结果放入科学报告中。 4 将结果传递给 IEEE-754 标准 32 位。这将导致二进制。然后是把它变成十六进制。所有这一切都是一个无赖,我把代码希望它能为我解决这个问题;-) 问候。

      private String Float2Hex(String value) {
        String[] aux;
        String number = "", mantissa = "", exponent = "";
        Double div = 0;
        int exp = 0;
        aux = value.Split('.');
        number = Convert.ToString(int.Parse(aux[0]), 2);
        exp = number.Length - 1;

        mantissa = number.Substring(1, number.Length - 1);

        while ((aux.Length > 1) && (mantissa.Length < 23)) {
            div = Double.Parse("0," + aux[1]) * 2;
            aux = div.ToString().Split(',');
            mantissa += aux[0];
        }

        while (mantissa.Length < 23)    // Simple precision = 23 bits
            mantissa += "0";

        exponent = Convert.ToString(exp + 127, 2);

        if (value.Substring(0, 1).Equals("-"))
            number = "1" + exponent + mantissa;
        else
            number = "0" + exponent + mantissa;

        return Bin2Hex(number);
    }

我使用另一个伙伴的以下 Bin2Hex 函数:Binary to Hexadecimal

最佳答案

另一个例子:

        String value = "", tmp = "";

        val = float.Parse(StringValue);

        byte[] b = BitConverter.GetBytes(val);
        StringBuilder sb = new StringBuilder();

        foreach (byte by in b)
            sb.Append(by.ToString("X2"));

        return sb.ToString();            

关于c# - C# 中的 float 到十六进制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26011546/

相关文章:

javascript - 数据到达 Controller 但不查看

c# - 拦截asp.net core Authorize Action 授权成功后执行自定义 Action

AWK 将十进制转换为二进制

java - 在java中点后得到7位数字

c# 计时器不准确?

c# - 为什么 SendKey.Send() 偶尔只工作一次?

c - 为 float 指定十六进制值返回错误值

JQuery 颜色选择器更改十六进制值

c - 如何在 C 中将一个 char 数组的整个值分配到另一个数组的一个位置为十六进制格式?

ios - 有没有一种简单的方法可以在 SpriteKit 的计算中使用小数?