c# 中怎么获取 字节二进制的高位低位 并且取反之类的. 没学过C啊 吐血
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
ushort data = 18;
ushort data1 = data;
byte sum = 1;
while (data1 != 0)
{
if (data1 % 2 == 1) sum++;
data1 = (ushort)(data1 / 2);
}
byte checksum = (byte)(~(sum % 16) + 1);
ushort result = (ushort)(data
[解决办法]
checksum << 12);
Console.WriteLine(result.ToString("X"));
}
}
}
[StructLayout(LayoutKind.Explicit)]
struct stu
{
[FieldOffset(0)]
public ushort sum;
[FieldOffset(0)]
public byte a;
[FieldOffset(1)]
public byte b;
}
static void Main(string[] args)
{
stu s = new stu();
s.sum = 18;
var t = (s.a / 16 + s.a % 16 + s.b / 16 + s.b % 16) % 16;
var str = ((ushort)(s.sum
[解决办法]
(ushort)(~(ushort)t + 1u) << 12)).ToString("X");
Console.WriteLine(str);
Console.ReadLine();
}
using System;
using System.Linq;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine(GetValue(18));
}
static string GetValue(int input)
{
var m = Convert.ToString(input, 2).PadLeft(12, '0'); //输入转字符串
var i = 0;
var sum = m.GroupBy(v => i++ % 3).Select(c => Convert.ToInt32(string.Join("",c),2)).Sum(); //求和
var check = (~sum + 1) & 15; //取反+1
var result = (check << 12) + input; //串连
return Convert.ToString(result, 16);
}
}
}