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。 –