【问题标题】:c# bin to hex and hex to binc# bin to hex 和 hex to bin
【发布时间】:2012-07-26 03:43:43
【问题描述】:

我在将二进制转换为十六进制然后将十六进制转换为二进制时遇到问题。
例如,我有一个图像文件。首先我想将该图像转换为十六进制字符串,然后我想将此十六进制字符串插入数据库。当用户想要获取该图像文件时,程序必须从数据库中读取十六进制字符串,然后转换为图像文件。 在 C# 中可以吗?

我尝试了 StackOverflow 中的一些示例方法,但我做不到。我做了一个图像文件,但它无法显示。

我正在等待您的帮助。
谢谢

【问题讨论】:

标签: c# binary hex


【解决方案1】:

您可以使用JSON.NET 库将字节[] 序列化为字符串,然后将其转换为十六进制。然后在需要时使用同一个库将其反序列化回一个 byte[]。

我建议您将其作为字节 [] 存储在数据库中,因为它将使用至少两倍的空间作为字符串(十六进制的一个字节是 2 个字符,每个字节至少是 ASCII 或 UTF8 ) 并且 JSON 格式有一点微小的开销。

【讨论】:

    【解决方案2】:

    如果这对您有帮助,请告诉我们 -

        private string GetHexStringFromImage(System.Drawing.Image imageToConvert)
        {
            //Convert image it to byte-array
            byte[] byteArray;
            using (MemoryStream ms = new MemoryStream())
            {
                imageToConvert.Save(ms, System.Drawing.Imaging.ImageFormat.Png);
                byteArray = ms.ToArray();
            }
    
            //Convert byte-array to Hex-string
            StringBuilder hexBuilder = new StringBuilder();
            foreach (byte b in byteArray)
            {
                string hexByte = b.ToString("X");
    
                //make sure each byte is represented by 2 Hex digits
                string tempString = hexByte.Length % 2 == 0 ? hexByte : hexByte.PadLeft(2, '0');
    
                hexBuilder.Append(tempString);
            }
    
            //return Hex-string to save to DB
            return hexBuilder.ToString();
        }
    
        private System.Drawing.Image GetImageFromHexString(string hexSting)
        {
            //Convert Hex-string from DB to byte-array
            int length = hexSting.Length;
            List<byte> byteList = new List<byte>();
    
            //Take 2 Hex digits at a time
            for (int i = 0; i < length; i += 2)
            {
                byte byteFromHex = Convert.ToByte(hexSting.Substring(i, 2), 16);
                byteList.Add(byteFromHex);
            }
            byte[] byteArray = byteList.ToArray();
    
            //Convert byte-array to image file and return the image
            using (MemoryStream stream = new MemoryStream(byteArray))
            {
                return System.Drawing.Image.FromStream(stream);
            }
        }
    

    【讨论】:

      猜你喜欢
      • 2021-08-17
      • 2014-11-13
      • 1970-01-01
      • 2015-01-13
      • 2021-12-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-09-15
      相关资源
      最近更新 更多