You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在C# WinForm中实现1E00A84ACC与11029196的转换?

RFID标签数值转换问题解答

1. 十六进制1E00A84ACC转十进制11029196的方法

1E00A84ACC是64位十六进制数,11029196是它的低32位有效数值,转换方式:

  • 将十六进制字符串转为64位无符号整数:Convert.ToUInt64("1E00A84ACC", 16);
  • 强制转换为uint类型提取低32位,结果即为十进制11029196;
  • 也可直接截取十六进制后7位0A84ACC,转十进制得到目标值。

2. 十进制0011029196还原完整十六进制1E00A84ACC的方法

十进制0011029196仅对应原64位十六进制的低32位,丢失的1E0是高32位的十六进制值(对应十进制480)。还原步骤:

  • 将高32位数值480左移32位,再与低32位十进制值11029196做按位或运算;
  • 将运算得到的64位整数转为十六进制字符串,即可得到1E00A84ACC。

3. C# WinForm中的实现代码

十六进制转目标十进制

// 十六进制字符串转低32位十进制
string hexInput = "1E00A84ACC";
ulong fullHexValue = Convert.ToUInt64(hexInput, 16);
uint low32Decimal = (uint)fullHexValue;
// low32Decimal的值为11029196

十进制还原完整十六进制

// 已知低32位十进制和高32位十六进制前缀
uint lowDecimal = 11029196;
uint highPart = Convert.ToUInt32("1E0", 16); // 高32位对应的十进制480
ulong fullValue = ((ulong)highPart << 32) | lowDecimal;
string fullHexOutput = fullValue.ToString("X"); // 输出"1E00A84ACC"
// 若需要固定10位长度,使用ToString("X10")

串口读取十六进制的处理

从串口读取字节流时,需先转换为十六进制字符串(注意字节序适配):

// 示例:串口读取到的大端序字节(对应1E00A84ACC)
byte[] serialBytes = new byte[] { 0x1E, 0x00, 0xA8, 0x4A, 0xCC };

// 系统为小端序时,反转数组适配大端数据
if (BitConverter.IsLittleEndian)
{
    Array.Reverse(serialBytes);
}

// 转换为无分隔符的十六进制字符串
string hexFromSerial = BitConverter.ToString(serialBytes).Replace("-", "");
// 后续可复用前面的转换逻辑

内容的提问来源于stack exchange,提问作者Châu Nguyễn

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.12 20:12:42