PB处理BLOB类型的方法

转换BLOB

BLOB转为Byte字节流

在这里插入图片描述

BLOB转为Char字节流

在这里插入图片描述

BLOB转为二进制字符

在这里插入图片描述

BLOB转为十六进制字符

在这里插入图片描述

生成BLOB

Byte字节流转为BLOB

在这里插入图片描述

Char字节流转为BLOB

在这里插入图片描述

二进制字符转为BLOB

在这里插入图片描述

十六进制字符转为BLOB

在这里插入图片描述

源代码

发现BUG请留言或私信,以便修正(QQ:768310524 TEL:18649713925)
代码拷贝到文本编辑器,另存为 n_func_blob.sru
代码中用到的类n_func_radix参见另一篇文章:PB实现进制转换

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

global type n_func_blob from nonvisualobject autoinstantiate
end type

type variables
private:
	n_func_radix fradix
end variables

forward prototypes
public function string blob2hex (blob blb)
public function string blob2bin (blob blb)
public function blob bytearray2blob (byte b[])
public function blob bin2blob (string bin)
public function blob hex2blob (string hex)
public function blob chararray2blob (character ch[])
public function long blob2bytearray (blob blb, ref byte b[])
public function long blob2chararray (blob blb, ref character ch[])
public function long slice (blob blb, integer length, ref blob rblb[])
public function blob fill (byte b, long length)
end prototypes

public function string blob2hex (blob blb);byte b[]
char hex[]
long i,j,ll
string h

b = GetByteArray(blb)
ll = upperbound(b)
for i = 1 to ll
	h = fradix.Byte2Hex(b[i])
	j ++
	hex[j]= left(h , 1)
	j ++
	hex[j] = right(h , 1)
next

return hex
end function

public function string blob2bin (blob blb);char binchar[],bin[]
long i,j,ll
byte b[]

ll = this.Blob2ByteArray(blb,b)
for i = 1 to ll
	binchar = fradix.Byte2Bin(b[i])
	j ++
	bin[j] = binchar[1]
	j ++
	bin[j] = binchar[2]
	j ++
	bin[j] = binchar[3]
	j ++
	bin[j] = binchar[4]
	j ++
	bin[j] = binchar[5]
	j ++
	bin[j] = binchar[6]
	j ++
	bin[j] = binchar[7]
	j ++
	bin[j] = binchar[8]
next

return bin
end function

public function blob bytearray2blob (byte b[]);return Blob(b)
end function

public function blob bin2blob (string bin);int p
byte b[]
long i,j,ll

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

ll = len(bin) / 8
j = 1
for i = 1 to ll
	b[i] = fradix.Bin2Byte(mid(bin,j,8))
	j += 8
next

return Blob(b)
end function

public function blob hex2blob (string hex);
if mod(len(hex),2) <> 0 then hex = "0" + hex

long i,j,ll
byte b[]

ll = len(hex) / 2
j = 1
for i = 1 to ll
	b[i] = fradix.Hex2Byte(mid(hex,j,2))
	j += 2
next

return Blob(b)
end function

public function blob chararray2blob (character ch[]);byte b[]
long i,ll

ll = upperbound(ch)
for i = 1 to ll
	b[i] = asc(ch[i])
next

return Blob(b)
end function

public function long blob2bytearray (blob blb, ref byte b[]);b = GetByteArray(blb)

return upperbound(b)
end function

public function long blob2chararray (blob blb, ref character ch[]);long i,ll
byte b[]
char c[]

b = GetByteArray(blb)
ll = upperbound(b)
for i = 1 to ll
	c[i] = char(b[i])
next

ch = c
return ll
end function

public function long slice (blob blb, integer length, ref blob rblb[]);long i
long ll_loop
blob arr[]

ll_loop = ceiling(len(blb) / length)

for i = 1 to ll_loop
	arr[i] = blobmid(blb,(i - 1) * length + 1 , length)
next

rblb = arr
return upperbound(rblb)
end function

public function blob fill (byte b, long length);byte lbyte[]
long i

for i = 1 to length
	lbyte[i] = b
next

return blob(lbyte)
end function

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

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



  • 3
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值