2015-11-23 3 views
0

У меня есть справочная программа, которую я получил в Интернете. В этой переменной data64 определяется как ulong. Какие они преобразования в юникод и отображения в текстовом поле, как это:Углеродное преобразование с шестнадцатеричным преобразованием

TextBox1.AppendText = Rxmsg.data64.ToString("X");

Фактическое значение data64 является «12288092688749907974». Пока он отображается в текстовом поле, это значение «AA88133200035006». Я подумал, что это простая децимальная конверсия. Поэтому я преобразовал значение data64 в hex, но я ошибся. Может ли кто-нибудь объяснить мне, как было сделано вышеуказанное преобразование? Это связано с одним из моих проектов. Мне было бы очень полезно продолжить дальше.

ответ

0

причиной является порядок байт дисплея

IsLittleEndian Да: 06-50-03-00-32-13-88-AA

IsLittleEndian №: AA-88-13-32- 00-03-50-06

fiddle demo и wikipedia link

using System; 

namespace ConsoleApplication1 
{ 
    public class Program 
    { 
     public static void Main(string[] args) 
     { 
      var value = 12288092688749907974u; 
      var bytes = BitConverter.GetBytes(value); 

      Console.Write(BitConverter.IsLittleEndian ? "IsLittleEndian Yes" : "IsLittleEndian No"); 
      Console.WriteLine(" Value " + BitConverter.ToString(bytes)); 

      Array.Reverse(bytes); 
      Console.Write(BitConverter.IsLittleEndian ? "IsLittleEndian No" : "IsLittleEndian Yes"); 
      Console.WriteLine(" Value " + BitConverter.ToString(bytes)); 

      Console.Read(); 
     } 
    } 
} 
Смежные вопросы