PB实现进制转换

二进制

8位二进制转byte

在这里插入图片描述

二进制转十进制数

在这里插入图片描述

二进制转十六进制

在这里插入图片描述

byte

byte转8位二进制

在这里插入图片描述

byte转2位十六进制

在这里插入图片描述

十进制数

十进制转二进制

在这里插入图片描述

十进制转十六进制

在这里插入图片描述

十六进制

十六进制转二进制

在这里插入图片描述

2位十六进制转byte

在这里插入图片描述

十六进制转十进制

在这里插入图片描述

源代码

发现BUG请留言或私信,以便修正(QQ:768310524 TEL:18649713925)
代码拷贝到文本编辑器,另存为 n_func_radix.sru

$PBExportHeader$n_func_radix.sru
forward
global type n_func_radix from nonvisualobject
end type
end forward

global type n_func_radix from nonvisualobject autoinstantiate
end type

type variables
private:
	char 	HEXDIGIT[] = "0123456789ABCDEF"
	string BINSTR[] = {'0000','0001','0010','0011','0100','0101','0110','0111','1000','1001','1010','1011','1100','1101','1110','1111'}
end variables
forward prototypes
public function unsignedlong bin2dec (string bin)
public function string dec2bin (unsignedlong num)
public function string dec2hex (unsignedlong num)
public function unsignedlong hex2dec (string hex)
public function string bin2hex (string bin)
public function string hex2bin (string hex)
public function string byte2bin (byte b)
public function string byte2hex (byte b)
public function byte hex2byte (string hex)
public function byte bin2byte (string bin)
end prototypes

public function unsignedlong bin2dec (string bin);char binchar[]
long i,ll,result
string bindigitstr

bindigitstr = "01"
binchar = bin
ll = upperbound(binchar)
for i = 1 to ll
	result *= 2
	if binchar[i] = '1' then result ++
next

return result
end function

public function string dec2bin (unsignedlong num);byte r
string bin

do while num > 0
	r = mod(num,2)
	num /= 2
	if r = 1 then
		bin = '1' + bin
	else
		bin = '0' + bin
	end if
loop

return bin


end function

public function string dec2hex (unsignedlong num);byte r
string hex

do while num > 15
	r = mod(num,16)
	num /= 16
	hex = HEXDIGIT[r + 1] + hex
loop

hex = HEXDIGIT[num + 1] + hex
return hex
end function

public function unsignedlong hex2dec (string hex);char hexchar[]
long i,ll,result
string hexdigitstr

hexdigitstr = HEXDIGIT
hexchar = hex
ll = upperbound(hexchar)
for i = 1 to ll
	result *= 16
	result += pos(hexdigitstr,hexchar[i]) - 1
next

return result
end function

public function string bin2hex (string bin);int p
char hex[],binchar[]
long i,k,ll
byte temp

p = mod(len(bin) , 4)
if p <> 0 then p = 4 - p
bin = fill("0",p) + bin

binchar = bin
ll = upperbound(binchar) / 4
for i = 1 to ll
	temp = 1
	k ++
	if binchar[k] = '1' then temp += 8
	k ++
	if binchar[k] = '1' then temp += 4
	k ++
	if binchar[k] = '1' then temp += 2
	k ++
	if binchar[k] = '1' then temp += 1
	hex[i] = HEXDIGIT[temp]
next

return hex
end function

public function string hex2bin (string hex);string hexdigitstr
char bin[],binchar[],hexchar[]
long i,j,ll

hexchar = hex
ll = upperbound(hexchar)
hexdigitstr = HEXDIGIT
for i = 1 to ll
	binchar = BINSTR[pos(hexdigitstr,hexchar[i])]
	j ++
	bin[j] = binchar[1]
	j ++
	bin[j] = binchar[2]
	j ++
	bin[j] = binchar[3]
	j ++
	bin[j] = binchar[4]
next

return bin
end function

public function string byte2bin (byte b);string hex
hex = HEXDIGIT[b / 16 + 1] + HEXDIGIT[mod(b , 16) + 1]
return BINSTR[pos(HEXDIGIT , left(hex , 1))] + BINSTR[pos(HEXDIGIT , right(hex , 1))]
end function

public function string byte2hex (byte b);return HEXDIGIT[b / 16 + 1] + HEXDIGIT[mod(b , 16) + 1]
end function

public function byte hex2byte (string hex);return (pos(HEXDIGIT , left(hex , 1)) - 1) * 16 + pos(HEXDIGIT , right(hex , 1)) - 1
end function

public function byte bin2byte (string bin);char bchar[]
byte b

bchar = bin
if bchar[1] = '1' then b += 128
if bchar[2] = '1' then b += 64
if bchar[3] = '1' then b += 32
if bchar[4] = '1' then b += 16
if bchar[5] = '1' then b += 8
if bchar[6] = '1' then b += 4
if bchar[7] = '1' then b += 2
if bchar[8] = '1' then b += 1

return b
end function

on n_func_radix.create
call super::create
TriggerEvent( this, "constructor" )
end on

on n_func_radix.destroy
TriggerEvent( this, "destructor" )
call super::destroy
end on


  • 3
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
PB串口是指标准的软硬件串口通信协议,通过该协议可以实现串口数据的传输。在使用PB串口发送二进制数据时,需要按照一定的规则来进行数据的组织和发送。 首先,需要确定发送的二进制数据的格式和长度。二进制数据可以以字节数组的形式表示,每个字节可以表示8位的二进制数据。根据具体的需求,可以确定发送的数据长度,如发送一个字节、多个字节或者数据包。 其次,将发送的二进制数据按照指定的格式进行组织。可以使用编程语言提供的字节操作函数,将需要发送的数据换为字节数组。将每个字节的二进制数据按照顺序存储在数组中。 然后,将组织好的二进制数据通过PB串口发送出去。可以使用相应的串口通信库或者API函数,打开PB串口,并设置相应的串口参数,如波特率、数据位、停止位等。然后使用发送函数将二进制数据发送出去,可以按照字节的顺序依次发送,也可以将整个数据包一次性发送。 最后,接收端通过相同的PB串口协议接收二进制数据。接收端需要相应的程序来监听串口数据,并按照发送时的数据格式进行解析。可以使用串口通信库提供的接收函数,按照字节的顺序接收数据,并根据具体的需求进行处理。 总之,使用PB串口发送二进制数据需要将数据按照一定的格式组织,并通过相应的串口通信库来实现数据的发送和接收。需要注意的是,在发送和接收过程中需要保持发送端和接收端的串口参数一致,以确保数据的正确传输。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值