C語言-EM4100卡面上三個資料間轉換

源心鎖發表於2020-10-30

第一次上RFID實驗課出了這麼一道題:

使用C語言程式片段來描述,EM4100卡面上三個資料間轉換。額外引入一個運算元,通過C語言運算操作符實現。

至於EM4100卡面上相關資料的資訊,如下

一張EM4100卡上噴印兩段不同的程式碼:0007155956 109,12532。

其中前段:

前段: 0007155956是正常的維根32格式卡號,它是將十六進位制的卡內序列號“19 00 6D 30 F4h”中的後8位“00 6D 30 F4”,經數制轉換得到10位十進位制資料(即對應卡片上的十進位制數7155956”);

後段:

後段: 109,12532是維根24格式卡號,它是將十六進位制的卡內序列號後6位:6D 30 F4,再經讀卡器按照“6D+30 F4”格式,分兩段轉換成十進位制資料,兩段資料間用“,”隔開。逗號前的“109”由十六進位制“6D 30 F4”中“6D”轉換得到;逗號後的“12532”由十六進位制“6D 30 F4”中“30 F4”轉換得到。

其實這道題非常簡單。運用左移<<,右移>>,以及位或|運算子即可。程式碼如下:

#include <stdio.h>

int main( )
{
	int t;
	scanf("%d",&t);
	int a,b,c;
	switch(t){
		case 0:
			scanf("%d",&a);
			b=a>>16;
			c=a<<16;
			c>>=16;
			break;
		case 1:
			scanf("%d,%d",&b,&c);
			b<<16;
			a=b|c;
	}
	printf("WeiGE 32:%d, WeiGE 24:%d,%d",a,b,c);
	scanf("%d",&t);
	return 0;
}

相關文章