110,536
社区成员
发帖
与我相关
我的任务
分享
#region str_17to12 17字节源字符串压缩成12个字符串
static void Main(string[] args){
string str17 = "LSJW24H33AS070722";
str17 = "LSJW24HQQAS070722";
Console.WriteLine("" + str17);
char[] tempStr12 = new char[12];
str_17to12(tempStr12, str17.ToCharArray());
//string str12 = Convert.ToString(tempStr12);
Console.WriteLine("$$$$$$$$$$$$$$$$$$$ 17to12");
Console.WriteLine(tempStr12);
Console.WriteLine("$$$$$$$$$$$$$$$$$$$ 17to12");
// Console.WriteLine(str12);
char[] tempStr17 = new char[17];
str_12to17(tempStr17, tempStr12);
//这个数组是通过转换的
//char[] chTagID = tempStr12;
Console.WriteLine("$$$$$$$$$$$$$$$$$$$ 12to17");
Console.WriteLine(tempStr17);
Console.WriteLine("$$$$$$$$$$$$$$$$$$$ 12to17");
// ???
//怎么把转化后的tempStr17字节数组转化成16进制的byte[]?????????????
}
#region str_17to12 17字节源字符串压缩成12个字符串
/*====================================================================*/
/* */
/* FUNCTION: str_17to12 */
/* */
/* sz12 : 12字节目标缓存 */
/* sz17 : 17字节源字符串 */
/*====================================================================*/
static int str_17to12(char[] sz12, char[] sz17)
{
char[] src = new char[18];
char[] dst = new char[13];
int i;
int j;
int rc = 0;
if (null == sz12 || null == sz17)
{
return -1;
}
if (null == sz12 || null == sz17)
{
return -1;
}
Array.Copy(sz17, 0, src, 0, 17);
for (i = 0; i < 17; i++)
{
src[i] = Convert.ToChar(src[i] - 0x30);
}
// 4bit 存1个byte(代表一个字符)
sz12[11] = Convert.ToChar((src[16] & 0x0f) | (src[15] & 0x0f) << 4);
sz12[10] = Convert.ToChar((src[14] & 0x0f) | (src[13] & 0x0f) << 4);
sz12[9] = Convert.ToChar((src[11] << 6) | (src[12] & 0x3f)); // 11(2) + 12(6)
sz12[8] = Convert.ToChar((src[10] << 4) | (src[11] >> 2)); // 10(4) + 11(4)
sz12[7] = Convert.ToChar((src[9] << 2) | (src[10] >> 4)); // 9(6) + 10(2)
sz12[6] = Convert.ToChar((src[7] << 6) | (src[8] & 0x3f)); // 7(2) + 8(6)
sz12[5] = Convert.ToChar((src[6] << 4) | (src[7] >> 2)); // 6(4) + 7(4)
sz12[4] = Convert.ToChar((src[5] << 2) | (src[6] >> 4)); // 5(6) + 6(2)
sz12[3] = Convert.ToChar((src[3] << 6) | (src[4] & 0x3f)); // 3(2) + 4(6)
sz12[2] = Convert.ToChar((src[2] << 4) | (src[3] >> 2)); // 2(4) + 3(4)
sz12[1] = Convert.ToChar((src[1] << 2) | (src[2] >> 4)); // 1(6) + 2(2)
sz12[0] = Convert.ToChar(src[0] & 0x3f); // 6bit存储一个字符
return rc;
}
#endregion
#region str_12to17 12字节源字符串还原成17个字符串
/*====================================================================*/
/* */
/* FUNCTION: str_12to17 */
/* */
/* sz17 : 12字节目标字符串 */
/* sz12 : 12节源缓存 */
/*====================================================================*/
static int str_12to17(char[] sz17, char[] sz12)
{
int i, j;
int rc = 0;
char a, b, c;
// 1个4 bit 存1个byte(代表一个字符)
// 1个byte=8bit 前4bit为高4位,后4bit为低4位 (一般高4位有用)
sz17[16] = Convert.ToChar(sz12[11] & 0x0f);
sz17[15] = Convert.ToChar((sz12[11] & 0xf0) >> 4);
sz17[14] = Convert.ToChar(sz12[10] & 0x0f);
sz17[13] = Convert.ToChar((sz12[10] & 0xf0) >> 4);
sz17[12] = Convert.ToChar(sz12[9] & 0x3f);
sz17[11] = Convert.ToChar(((sz12[9] & 0xc0) >> 6) | ((sz12[8] & 0x0f) << 2));
sz17[10] = Convert.ToChar(((sz12[8] & 0xf0) >> 4) | ((sz12[7] & 0x03) << 4));
sz17[9] = Convert.ToChar((sz12[7] & 0xfc) >> 2);
sz17[8] = Convert.ToChar(sz12[6] & 0x3f);
sz17[7] = Convert.ToChar(((sz12[6] & 0xc0) >> 6) | ((sz12[5] & 0x0f) << 2));
sz17[6] = Convert.ToChar(((sz12[5] & 0xf0) >> 4) | ((sz12[4] & 0x03) << 4));
sz17[5] = Convert.ToChar((sz12[4] & 0xfc) >> 2);
sz17[4] = Convert.ToChar(sz12[3] & 0x3f);
sz17[3] = Convert.ToChar(((sz12[3] & 0xc0) >> 6) | ((sz12[2] & 0x0f) << 2));
sz17[2] = Convert.ToChar(((sz12[2] & 0xf0) >> 4) | ((sz12[1] & 0x03) << 4));
sz17[1] = Convert.ToChar((sz12[1] & 0xfc) >> 2);
sz17[0] = Convert.ToChar(sz12[0] & 0x3f); // 6bit 存 1 byte(代表一个字符)
for (i = 0; i < 17; i++)
{
sz17[i] = Convert.ToChar(sz17[i] + 0x30);
}
return rc;
}
#endregion6bit 存 1 byte(代表一个字符)
for (i = 0; i < 17; i++)
{
sz17[i] = Convert.ToChar(sz17[i] + 0x30);
}
return rc;
}
#endregion
var charArray = new char[12];
var byteArray = new byte[24];
for(int i=0,j=0;i<charArray.Length;i++)
{
byteArray[j++] = (byte)((ushort)charArray[i] & 0x00FF);
byteArray[j++] = (byte)((ushort)(charArray[i] >> 8) & 0x00FF);
}
static unsafe void Main(string[] args)
{
char[] x = new char[12];
byte* y;
fixed(char* p = x)
{
y = (byte*)p;
//y[0]......
//y[1]......
}
}
virtual void WriteTagID(
TagType tagType,
byte[] tagID
)