C# 十进制到 byte[] 并返回到 C

Ted*_*y_R 1 c c#

我有一个系统可以在 Mifare 卡上存储十进制值

使用此代码将 C# 十进制值转换为 16 字节的字节数组

MemoryStream memStream = new MemoryStream();
BinaryWriter writer = new BinaryWriter(memStream);
try
{
  try
  {
     writer.Write(m_Value);
     tmp = memStream.ToArray();
  }
  finally
  {
     memStream.Close();
  }
}
finally
{
  writer.Close();
}
Run Code Online (Sandbox Code Playgroud)

这给出了一个 16 字节的表示。

现在我们有一个客户需要读取这 16 个字节并将其转换回十进制数,但是在 C

这是怎么做的?

任何人都可以找到 C# 字节表示的定义/规范,我不能

Mar*_*ell 5

你并不需要使用MemoryStreamBinaryWriter等等,在这里; 仅仅decimal.GetBits(value)是罚款。内容完整记录,在这里:https : //msdn.microsoft.com/en-us/library/system.decimal.getbits(v=vs.110).aspx。有一个接受相同格式的构造函数。

请注意,这会给您一个int[],而不是一个byte[],但是...介于int和之间byte是微不足道的;可能最简单的方法是使用 shift 和 mask。

BinaryWriter版本没有正式记录,但可能只是GetBits()按顺序写入的整数。