⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 octetstring.c

📁 该程序是针对UCOS环境下的数据类型等的定义和转换函数
💻 C
字号:
#include "package.h"


/* Package macsorts */

/*******************************************************************
* OCTET sort (influenced by Z.105, Annex A)
*******************************************************************/
/* Octet is a subtype of Bitstring where length always =8. */
/* Z.105 adds a "size" keyword to SDL and defines Octet with */
/* "... constants size (8) ..." to impose this length constraint. */
/* Here Octet relies on proper use maintain lengths as multiples */
/* of 8. Proper length strings are created by the hexadecimal */
/* Bitstring literals (e.g. 0xD5) and operator mkOctet: */
/* o:= mkOctet(i) converts a non-negative Integer (mod 256) */
/* to an Octet (exactly 8 bits) */
/* i:= octetVal(o) converts an Octet to an Integer (0:255) */
/* o:= flip(o) reverses bit order of the Octet */
/* (0<-->7, 1<-->6, 2<-->5, 3<-->4) */

INT8U mkOctet(Integer val)
{
	INT8U result=0;
	 result=val%256;

	return (result);
}								

INT8U flip(INT8U val)
{
	INT8U i,result=0;
	for (i=0;i<8;i++)
	{
		if ( val & (0x80>>i))
			result |= (0x01 << i);
	}
	return (result);
}


Integer octetVal(INT8U val)
{
	
	return (Integer)val;
}								


/*******************************************************************
* OCTET STRING sort (somewhat influenced by Z.105, Annex A)         
*******************************************************************/
/* Octetstrings are 0-ORIGIN strings of Octet, NOT 1-ORIGIN */      
/* strings like Octet_String in Z.105 (hence the name change). */   
/* Octetstring has conversion operators to and from Bitstring, */   
/* and integer to Octetstring. Octetstring literals are "null" */   


/* mkOS(i1,i2) returns */
/* mkstring(mkOctet(i1)) padded (0x00) to length i2 */
void mkOS (Integer i, Integer k, Octetstring *os)
{
	Integer j;
	os->ptr[0] = mkOctet(i);    
	for (j = 1; j < k; j++)
	{
		os->ptr[j] = 0;
	}
}/* 函数结果通过os来传递,通过定义一个数组,并将os的ptr指向该数组来使用此函数。*/


/* 16-bit int to 2-octets */
void mk2octets(Integer i, Octetstring *oct)
{
	oct->ptr[0] = i%256;
	oct->ptr[1] = i/256;
	oct->length = 2;
}/* 函数结果通过oct来传递 */

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -