0
第二天试图从字节值由0x40的字节十六进制的NSString与缩放0x40的字节
我试图摆脱的Logic Pro/Mackie Control上的十六进制值换算的字符。
逻辑发给我0xE,这表示这是'n'。如果它向我发送'4e',这意味着我应该在显示屏上画'n'。 (只需在最后加点)。
以下是将char转换为字节的公式。请帮我做反之亦然公式。
char translate_seven_segment(char achar)
{
achar = toupper(achar);
if (achar >= 0x40 && achar <= 0x60)
return achar - 0x40;
else if (achar >= 0x21 && achar <= 0x3f)
return achar;
else
return 0x00;
}
char s = 'N';
Byte ad = translate_seven_segment(s) + ('.' == '.' ? 0x40 : 0x00);
我也发现下面的代码(这似乎没有礼帽()):
def translate_seven_segment(char)
case char
when 0x40..0x60
char - 0x40
when 0x21..0x3f
char
else
0x00
end
end
我怎样才能扭转这种局面?我知道麦基使用这段代码从char构建十六进制。但我需要反过来,是从十六进制得到char。
你有一堆东西在那里错了。如果传入的值不是UTF8字符,则不应该执行'toUpper' - 它只是简单地处理数据。您应该屏蔽掉40位(与0xBF),然后添加0x40以获得您的基本角色(之后如果您愿意,可以对其进行操作)。并用0x40原始字符来测试'.'指示。 –
这不是我正在做的。这是原始的Mackie代码。我只需要将dex转换为char。我知道麦基似乎使用这个公式。 – user1195202
有些地方你必须找到规格。在我看来,你所拥有的可能是将ASCII转换为7段的代码,而不是其他方式。这是没有意义的'('。'=='。'?0x40:0x00)' - 它总是计算为0x40。 –