gpt4 book ai didi

C# 汉明编码串行输出

转载 作者:行者123 更新时间:2023-11-30 12:22:44 27 4
gpt4 key购买 nike

我正在尝试与需要汉明编码 ASCII 字符的 RS232 设备通信。

下表由厂商提供:

Byte    Encoded
0 15
1 02
2 49
3 5E
4 64
5 73
6 38
7 2F
8 D0
9 C7
A 8C
B 9B
C A1
D B6
E FD
F EA

我编写了这个 C# 函数来对每个字节进行编码(ascii 字符),但该设备仅在其屏幕上解码行话。

/// <summary>Takes ASCII char as byte and returns hamming encoded version.</summary>
/// <param name="input">Byte to encode.</param>
/// <returns>Hamming encoded byte.</returns>
private byte ByteHamming(byte input)
{
switch (input)
{
case 0x00:
return 0x15;
case 0x01:
return 0x02;
case 0x02:
return 0x49;
case 0x03:
return 0x5E;
case 0x04:
return 0x64;
case 0x05:
return 0x73;
case 0x06:
return 0x38;
case 0x07:
return 0x2F;
case 0x08:
return 0xD0;
case 0x09:
return 0xC7;
case 0x0A:
return 0x8C;
case 0x0B:
return 0x9B;
case 0x0C:
return 0xA1;
case 0x0D:
return 0xB6;
case 0x0E:
return 0xFD;
case 0x0F:
return 0xEA;
default:
return input;
}
}

我是不是误解了海明应该如何工作?我不是计算机科学家:)

最佳答案

正如@Mitch 建议的那样,您应该对半字节进行编码。所以这样的事情应该有效:

将您的实际方法重命名为 NibbleHamming(),并添加:

private byte ByteHamming(byte input)
{
byte lo = (byte)(input & 0x0F);
byte hi = (byte)((input & 0xF0) >> 4);
lo = NibbleHamming(lo);
hi = NibbleHamming(hi);
return lo + hi * 0x10;
}

关于C# 汉明编码串行输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39672317/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com