pb blob类型变量怎么去掉末尾的空格

pb blob类型变量如何去掉末尾的空格?
pb blob类型变量如何去掉末尾的空格?

------解决方案--------------------
trim(blob)
------解决方案--------------------
blob b_1
//取 blob
select b_1 into :b_1 from t;
b_1=blob(rtrim(string(b_1)))

------解决方案--------------------
探讨
trim(blob)肯定不行吧,你有没有试过啊,兄弟

------解决方案--------------------
慎用String(Blob),它有时会让你得到意料之外的结果, 主要是BOM标识符会被自动转换。
------解决方案--------------------
b_1=blob(righttrim(string(b_1)))

------解决方案--------------------
再不行,土一点
C/C++ code
long i
for i = len(lb) to 1 step -1
    if blobmid(lb, i, 1) = blob(' ') then
        lb = blobmid(lb, 1, i - 1)
    else
        exit
    end if
next

------解决方案--------------------
探讨
b_1=blob(righttrim(string(b_1)))

------解决方案--------------------
blob说白了,就是一段数据,char[长度],所以和string没有直接的对应关系。因为PB的字符串也是属于C系的字符串以\0作为结尾,所以不能转成string来判断末尾空格。你可以用BlobMid从尾部去判断是否为\x20或者\x0,如果尾部有少数空格的话,那一定耗时比较少。然后截取前面部分。在10.5后好像有byte类型,和GetByteArray函数(效率比较高),你可以先转换在判断,时间成本应该比较小。
------解决方案--------------------
为什么要这么处理blob 数据?
------解决方案--------------------
C# code
Blob lblb_Source
Blob lblb_Target
Long i
Long ll_Len
Byte ly_Char

lbl_Source = ...
ll_Len = Length(lblb_Source)
// 从最后一位开始循环处理数据
For i = ll_Len To 1 Step -1
    GetByte(lblb_Source, i, ly_Char)
    // 如果当前字节不是空格、Tab、字符串结尾符
    If ly_Char <> 0 And ly_Char <> 32 And ly_Char <> 9 Then
        Exit    // 退出循环
    End If
Next

lbl_Target = BlobMid(lbl_Source, 1, i)    // 截取数据

------解决方案--------------------
是用trim啊。