接續之前關於PackBCD格式的介紹,利用Convert.ToString強大的功能,將數值資料轉為2進制輸出,觀察PackBCD格式與一般數值格式的差異

packbcd1.jpg

輸入資料>=10開始出現差異,因為10被拆成1與0,1被儲存於高四位,0被儲存於低四位
Convert.ToString(1,2).PadLeft(8,'0')
"00000001"
Convert.ToString(9,2).PadLeft(8,'0')
"00001001"
Convert.ToString(10,2).PadLeft(8,'0')
"00001010"
Convert.ToString(PackBCDConverter.ToPackBCD(1),2).PadLeft(8,'0')
"00000001"
Convert.ToString(PackBCDConverter.ToPackBCD(9),2).PadLeft(8,'0')
"00001001"
Convert.ToString(PackBCDConverter.ToPackBCD(10),2).PadLeft(8,'0')
"00010000"

98被拆成9與8,9被儲存於高四位,8被儲存於低四位
Convert.ToString(8,2).PadLeft(8,'0')
"00001000"
Convert.ToString(9,2).PadLeft(8,'0')
"00001001"
Convert.ToString(98,2).PadLeft(8,'0')
"01100010"
Convert.ToString(PackBCDConverter.ToPackBCD(98),2).PadLeft(8,'0')
"10011000"

完整單元測試:
Convert.ToString(0,2).PadLeft(8,'0')
"00000000"
Convert.ToString(1,2).PadLeft(8,'0')
"00000001"
Convert.ToString(2,2).PadLeft(8,'0')
"00000010"
Convert.ToString(3,2).PadLeft(8,'0')
"00000011"
Convert.ToString(4,2).PadLeft(8,'0')
"00000100"
Convert.ToString(5,2).PadLeft(8,'0')
"00000101"
Convert.ToString(6,2).PadLeft(8,'0')
"00000110"
Convert.ToString(7,2).PadLeft(8,'0')
"00000111"
Convert.ToString(8,2).PadLeft(8,'0')
"00001000"
Convert.ToString(9,2).PadLeft(8,'0')
"00001001"
Convert.ToString(10,2).PadLeft(8,'0')
"00001010"
Convert.ToString(11,2).PadLeft(8,'0')
"00001011"
Convert.ToString(12,2).PadLeft(8,'0')
"00001100"
Convert.ToString(21,2).PadLeft(8,'0')
"00010101"
Convert.ToString(89,2).PadLeft(8,'0')
"01011001"
Convert.ToString(98,2).PadLeft(8,'0')
"01100010"
Convert.ToString(99,2).PadLeft(8,'0')
"01100011"
Convert.ToString(PackBCDConverter.ToPackBCD(0),2).PadLeft(8,'0')
"00000000"
Convert.ToString(PackBCDConverter.ToPackBCD(1),2).PadLeft(8,'0')
"00000001"
Convert.ToString(PackBCDConverter.ToPackBCD(9),2).PadLeft(8,'0')
"00001001"
Convert.ToString(PackBCDConverter.ToPackBCD(10),2).PadLeft(8,'0')
"00010000"
Convert.ToString(PackBCDConverter.ToPackBCD(11),2).PadLeft(8,'0')
"00010001"
Convert.ToString(PackBCDConverter.ToPackBCD(12),2).PadLeft(8,'0')
"00010010"
Convert.ToString(PackBCDConverter.ToPackBCD(21),2).PadLeft(8,'0')
"00100001"
Convert.ToString(PackBCDConverter.ToPackBCD(89),2).PadLeft(8,'0')
"10001001"
Convert.ToString(PackBCDConverter.ToPackBCD(98),2).PadLeft(8,'0')
"10011000"
Convert.ToString(PackBCDConverter.ToPackBCD(99),2).PadLeft(8,'0')
"10011001"

單元測試正常

在不穩定的網路環境上,收到的資料可能會發生位元錯誤(bit errors),或稱為封包錯誤(packet error),此時也會把原始資料轉為16進制(Convert.ToString(X,16))或2進制(Convert.ToString(X,2))輸出,觀察尋找發生錯誤的位址

arrow
arrow
    文章標籤
    程式設計 C# UnitTest
    全站熱搜
    創作者介紹
    創作者 Yang 的頭像
    Yang

    GNAySolution

    Yang 發表在 痞客邦 留言(0) 人氣()