用goalng实现7bit编解码

GSM短信编码的奥秘:7bit PDU格式详解与Python实现教程 本文深入解析GSM短信编码中的7bit PDU格式,详细讲解其编码原理与实现方法,并提供完整的Python编解码器实现教程。通过位操作技术,7bit PDU在有限带宽下实现高效数据传输,特别适合物联网设备应用。文章包含编码示例、性能测试及现代IoT实践案例,帮助开发者掌握这一经典通信技术。 阅读详情

用golang实现7bit的编解码,不介绍7bit编码了,直接上代码
用到的外部包:

"github.com/axgle/mahonia"

解码代码:

func Bit2string(str string) string {
	d := make([]byte, len(str)/2)
	for i := 0; i < len(str); i = i + 2 {
		d[i/2] = (byte)(StringToInt64(str[i : i+2]))
	}
	othermask := []byte{0x80, 0xc0, 0xe0, 0xf0, 0xf8, 0xfc, 0xfe}
	mymask := []byte{0x7f, 0x3f, 0x1f, 0x0f, 0x07, 0x03, 0x01}

	other := byte(0)
	temp := byte(0)
	sb := bytes.Buffer{}

	for i := 0; i < len(d); i++ {
		n := i % 7
		var index uint = uint(n)
		temp = d[i]
		// 得到我的数据
		d[i] = (byte)(d[i] & mymask[index])
		d[i] = (byte)(d[i] << index)

		if index != 0 {
			d[i] = (byte)(d[i] & othermask[7-index])

			other = (byte)(other >> (8 - index))
			other = (byte)(other & mymask[7-index])

			d[i] = (byte)(d[i] | other)
		}

		// 先把下一个数据信息拿走
		other = (byte)(temp & othermask[index])

		sb.WriteString(string(d[i]))
		if index == 6 {
			other = (byte)(other >> 1)
			other = (byte)(other & 0x7f)
			sb.WriteString(string(other))
		}
	}
	return sb.String()
}

编码代码

func Encode7bit(src string) string {
	srcbytes := []byte(src)
	var buffer bytes.Buffer
	left := byte(0)
	j := 0
	for i := 0; i < len(srcbytes); i++ {
		j = i & 7
		var index uint = uint(j)
		if j == 0 {
			left = srcbytes[i]
			if i == len(srcbytes)-1 {
				buffer.WriteString(fmt.Sprintf("%02x", left))
			}
		} else {
			value := (byte)((srcbytes[i] << (8 - index)) | left)
			left = (byte)(srcbytes[i] >> index)
			buffer.WriteString(fmt.Sprintf("%02x", value))
			if i == len(srcbytes)-1 {
				buffer.WriteString(fmt.Sprintf("%02x", left))
			}
		}
	}
	return strings.ToUpper(mahonia.NewEncoder("UTF-8").ConvertString(buffer.String()))
}

例:
7bit编码内容

C43728FFAE83D6EEF71D1416BFEB7490B24C17CAC369F7DC05

解码之后内容

Do you know about JetBrains.
7bit 短信编码浅析 7bit 短信编码简单介绍,DU模式收发短信可以使用3种编码:7-bit、8-bit和UCS2编码 通常短信内容为英文的时候使用:7-bit,8-bit编码方式 而短信内容为中文的时候则需要使用UCS2编码方式(UNICODE);7-bit、8-bit和UCS2编码可以发送的短消息的最大字符数分别是160、140和70 立即下载

相关推荐

PDu中7bit编解码

经过产品测试的代码,肯定能用,在网上下载的基础上调试修改了

7bit编码

为什么80%的码农都做不了架构师?>>> ...

weixin_34051201的博客 662

UTF7 编码及解码工具

UTF7 编码及解码工具 用于XSS方面

短信7bit解码(包括特殊扩展字符)

短信7bit pdu解码

qqwangfan的专栏 1167

PDUspy短信编解码工具

编解码短信pdu串,解析短信的内容,支持多种扩展协议。

UTF-7 编码解码工具

UTF-7,编码解码工具,可直接用于跨站脚本攻击xss

7bit 编码

本文转自:http://hi.baidu.com/wenzheng38/item/6de009f9273e1f1fa72988e1 GSM默认采用7bit编码,实际上,7位编码是种压缩算法,因为,ASCII码(不包括扩展ASCII),其值小于0x80,最高位bit8是0,被忽略了;而7bit编码就利用了这一位来存储数据;其编码时,依次将下一7位编码的后几位逐次移至前面,形成新的8位编码。 1...

junmail的专栏 2200

UnicodeEncodeError: ‘ascii‘ codec can‘t encode characters in position 0-4: ordinal not in range(128)

python3报错处理:UnicodeEncodeError: ‘ascii’ codec can’t encode characters in position 0-4: ordinal not in range(128) 一、报错场景 // 报错代码 Traceback (most recent call last): File "test_autoo3_2.py", line 214, in <module> main() File "test_autoo3_2.py",

浪里小飞侠的博客 4201

7bit与8bit编码互相转换

7-bit编码压缩时,每个字符占用7位,它们被紧凑地打包在8-bit单元中。当将这些数据解码回8-bit时,我们需要按照7位的方式从每个字节中提取出相应的字符,并重建完整的8-bit编码。假设你提供了7-bit编码后的hello数据(7-bit压缩后的数据:0x68, 0x65, 0x6C, 0x6C, 0x6F),解码后将会还原出原始的"hello"字符串。

编程技术, 日益精进 1731

U8 API接口开发踩过的坑

U8 API接口开发踩过的坑

haiyang5233233的专栏 1657

FreeRTOS OTA实战:从Bootloader设计到安全升级的完整流程(附MQTT示例代码)

本文详细介绍了在FreeRTOS系统中实现安全OTA固件升级的完整流程。内容涵盖从Bootloader设计、存储分区规划到与MQTT协议集成的OTA Agent任务开发,并重点解析了固件签名验证、防回滚等关键安全机制,为嵌入式物联网设备提供了一套高可靠性的远程升级解决方案。

weixin_29248653的博客 161

Seven-bit(七比特) ASCII是什么意思

ASCII码 基本介绍 上个世纪60年代, 美国制定了一套字符编码, 对英语字符与二进制位之间的关系, 做了统一规定,这被称为ASCII码。ASCII码一共规定了128个字符的编码, 比如空格“SPACE”是32(二进制00100000), 大写的字母A是65(二进制01000001)。 这128个符号(包括32个不能打印出来的控制符号), 只占用了一个字节的后面7位, 最前面的1位统一规定为0。特点 0~31 及 127(共 33 个)是控制字符或通信专用字符(其余为可显示字符),如控制符:LF(换 行)

黄佳俊的博客 3825

QTableView为例:Qt模型视图委托(MVD)(Model-View-Delegate)

QT中的MVD(模型-视图-委托)模式是一种类似于MVC的设计模式,将数据、界面和交互逻辑分离。模型负责数据管理,视图负责显示界面,而委托则嵌入在视图中处理数据的显示和编辑。QT提供了多种视图组件(如QListView、QTreeView、QTableView)和模型类(如QStandardItemModel、QAbstractItemModel),支持数据的多样化呈现。委托(Delegate)通过定制显示和编辑行为增强了视图的灵活性。该模式适用于各类数据结构展示(列表、表格、树形),能够高效处理数据与界面

菜一头包的博客 1989

ASCII编码->7Bit编码

转换说明:代码:        private byte[] ASCII_2_7BIT(byte[] aryBytes)        {            int step = 0; //    移动字节数            int byTemp = 0x7F;             for (int i = 0; i             {

风之领域 1万+

Uniapp-APP后台保活插件(安卓后台保活)

Uniapp-APP后台保活插件(安卓后台保活)亲测有效!

weixin_57844432的博客 1万+

【Proteus仿真】AT89C51单片机中断系列仿真——INT0中断控制LED小灯/INT0和INT1中断控制数码管

本文介绍了基于51单片机外部中断(INT0/INT1)的四个实践案例:1)INT0控制LED开关;2)INT0中断实现数码管计数/清零;3)INT0中断构建秒表功能(启动/暂停/清零);4)INT0/INT1双中断独立控制两组数码管计数。每个案例包含电路原理图、接线说明及完整源代码,重点演示了外部中断在硬件控制中的应用方法。附加硬件工程师笔试面试资料链接,涵盖器件知识、Multisim教程等内容,适合嵌入式学习者参考实践。(149字)

XU157303764的博客 1912

C语言7bit编码实现,VB.Net实现7Bit编码与解码

7Bit编码主要用于对单字节字符进行编码,因为单字节字符的ASCII码在00~7F之间,最高位始终为0实际有效的只有7个Bit,因此可以通过编码的方式将无效的最高位利用起来从而达到使用7个字节存储8个单字节字符的目的。7Bit编码的基本规则简单来说就是去掉最高位的0以后,将后一字节的低位挪到前一字节最高有效位的前面使前一字节凑够8bit,最后一个字节bit数不够8时从高位开始补0举例说明,如果对“...

weixin_36349918的博客 804

Vue - 最新详细实现滑块拖动拼图验证,网站登录验证滑块验证功能,拖动滑块到图片缺口的位置即为成功,滑块验证安全检测(详细示例代码,一键复制运行)

您一定见过很多系统都“配备”了滑块验证、拼图验证、找不同等,本质上都是为了验证登录系统的是人还是机器(代码),如下图所示效果: 您打开项目根目录,终端执行如下命令:拼图式拖动滑块验证 验证拖动滑块验证,滑动拼图/图片点选验证 接下来,在中加入以下代码: 如下图所示: 更多配置示例和参数详见官方文档,以下便是如上效果图的代码:.........

🏆 前端领域优质创作者 1万+

VB.Net实现7Bit编码与解码

7Bit编码主要用于对单字节字符进行编码,因为单字节字符的ASCII码在00~7F之间,最高位始终为0实际有效的只有7个Bit,因此可以通过编码的方式将无效的最高位利用起来从而达到使用7个字节存储8个单字节字符的目的。 7Bit编码的基本规则简单来说就是去掉最高位的0以后,将后一字节的低位挪到前一字节高位的前面,最后一个字节bit数不够时从高位开始补0 举例说明,如果对“abc”进行7Bit编

三楼一郎(狼窝) 1821

北斗导航 | SPP、RTK、RTD、PPP-RTK、PPP算法原理,公式及完整matlab代码

开发参考:SPP适合入门学习GNSS定位原理和最小二乘。RTK是工程高精度定位主流方案,但依赖基站。PPP适合无基站区域的广域高精度应用。PPP-RTK是融合两者优点的新一代技术,但系统复杂度最高。· 代码资源:raPPPid(VieVS PPP)是功能完整的MATLAB开源PPP工具箱,支持多系统PPP-AR。MATLAB GPS Toolbox 提供从SPP到PPP的完整功能实现。· 实际应用:农业自动驾驶、无人机航测通常使用网络RTK;大地测量、地壳形变监测常采用PPP事后处理;

尘世冰封的专栏 829

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

C语言7bit编码实现,GSM7bit编码对应表

GSM7bit编码对应表,编码时传输的是编码表对应的数组下标0-127。static const UINT16 c_Gsm7BitDefault[128] ={0x0040, 0x00a3, 0x0024, 0x00a5, 0x00e8, 0x00e9, 0x00f9, 0x00ec, 0x00f2,0x00c7, 0x000a, 0x00d8, 0x00f8, 0x000d, 0x00c5, 0...

weixin_28995873的博客 1116

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

关于邮件编码的中的"7bit" / "8bit" / "binary" /"quoted-printable" / "base64"

编码的种类 RFC 821(SMTP)将邮件限制为7位US-ASCII数据算上crlf不超过1000个字符。 当前定义了三种编码方式: identity (“等同”也就是不编码)、qp、base64。三种范围:二进制、8bit、7bit。 当Content-Transfer-Enco...

chuanghu1467的博客 3241

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

上一篇: 用goalng实现ascii、UCS2、UTF-8文本字符串的解码与编码
下一篇: golang客户端操作阿里开源的框架Canal
想吃窝窝头
博客等级 码龄7年 2粉丝 5原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值