BCB里如何将字节数组转换为十六进制字符串?求大虾指点

时间:2023-01-10 09:22:38
 public static string AdressByteArrayToHexString(byte[] address)
        {
            int length = address.Length * 2;
            string result = "";
           

            for(int i = address.Length -1 ; i >= 0 ; i--)
            {
                string temp = Convert.ToString(address[i], 16).PadLeft(2, '0');
                result += temp;
            }
          

            return result.ToUpper();

        }
  这是C#里的代码   不知道在BCB里如何实现,求大虾支招啊 ~~不甚感激

8 个解决方案

#1


用IntToHex:)

#2



String AdressByteArrayToHexString(byte * address)
{
   int length = sizeof(address) ;
   String result = "";
   for(int i = length -1 ; i >= 0 ; i--)
   {
      String temp;
      temp.sprintf("%02X", address[i]);
      result += temp;
   }
   return result.UpperCase();

}

#3


楼上代码在2009之后肯定编译不过:)

#4



    Byte x[4]; //定义字节数组,准备存储浮点数的四个字节
     AnsiString asRHex = "" ;  //转换后的十六进制数
     for(int i=0; i<4; i++)
    {
        asRHex += IntToHex(x[i],2) ;
    }

#5


引用 3 楼 cgl_lgs 的回复:
楼上代码在2009之后肯定编译不过:)

能解释的更清楚吗?谢谢

#6


引用 5 楼 youenyuan 的回复:
引用 3 楼 cgl_lgs 的回复:

楼上代码在2009之后肯定编译不过:)

能解释的更清楚吗?谢谢

String改成AnsiString就行了

#7


引用 5 楼 youenyuan 的回复:
引用 3 楼 cgl_lgs 的回复:

楼上代码在2009之后肯定编译不过:)

能解释的更清楚吗?谢谢


2009后字符串使用unicode编码,所以要改成AnsiString

#8


或者是:

      temp.sprintf("%02X", address[i]);
改成:

      temp.sprintf(L"%02X", address[i]);

#1


用IntToHex:)

#2



String AdressByteArrayToHexString(byte * address)
{
   int length = sizeof(address) ;
   String result = "";
   for(int i = length -1 ; i >= 0 ; i--)
   {
      String temp;
      temp.sprintf("%02X", address[i]);
      result += temp;
   }
   return result.UpperCase();

}

#3


楼上代码在2009之后肯定编译不过:)

#4



    Byte x[4]; //定义字节数组,准备存储浮点数的四个字节
     AnsiString asRHex = "" ;  //转换后的十六进制数
     for(int i=0; i<4; i++)
    {
        asRHex += IntToHex(x[i],2) ;
    }

#5


引用 3 楼 cgl_lgs 的回复:
楼上代码在2009之后肯定编译不过:)

能解释的更清楚吗?谢谢

#6


引用 5 楼 youenyuan 的回复:
引用 3 楼 cgl_lgs 的回复:

楼上代码在2009之后肯定编译不过:)

能解释的更清楚吗?谢谢

String改成AnsiString就行了

#7


引用 5 楼 youenyuan 的回复:
引用 3 楼 cgl_lgs 的回复:

楼上代码在2009之后肯定编译不过:)

能解释的更清楚吗?谢谢


2009后字符串使用unicode编码,所以要改成AnsiString

#8


或者是:

      temp.sprintf("%02X", address[i]);
改成:

      temp.sprintf(L"%02X", address[i]);