【数据处理】关于string与byte转换之间 数据丢失的问题

转载地址:http://blog.csdn.net/xiongyucai/article/details/2472662

最近在项目中遇到一个问题:

        程序中用到了MD5加密和IDEA加密,通过这些算法得出的结果均是字节码,但是我程序中使用一个通讯接口,其接受的参数类型为String。所以在发送时,需要转换为String。
        对于java来说,byte只能表示有符号的数据即范围为-128~127,所以对于编码后,如果原本字节流中的信息有大于127的话,将其转换成String类型,发送的时候再转换为byte[]时,会出现与原始字节码不一致的现象。
        因为在java中如果找不到合适的字符的话,默认会用'?'代替,如对于0xC9,很显然无法表示成字符,所以在进行byte[]->String->byte[]的时候,就会变成0x3F('?')。

此时可以通过字符编码的方式来解决:在进行byte[]->String的转换时,利用"new String(byteArray, "ISO-8859-1");"得到String。在进行String->byte[]的时候,再通过pkt.getBytes("ISO-8859-1")得到原始byte[],这样数据就不会出现错误。

对字符编码没有研究过,细节不是很清楚,此乃从网上搜集的解决方法,在此记录,以方便以后翻查。
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在Halcon中,我们可以使用以下几种方法来转换数据类型: 1. 使用cast函数:cast函数可以将一个变量或常量转换为指定的数据类型,如将数字转换为字符串或将字符串转换为数字。例如,将一个数字转换为字符串可以使用以下代码: ``` num := 123 str := cast(num, 's') ``` 这个例子中,我们使用cast函数将变量num转换为字符串类型,然后将结果赋值给变量str。 2. 使用convert函数:convert函数可以将一个变量或常量从一种颜色空间转换为另一种颜色空间,或者将一个图像从一种数据类型转换为另一种数据类型。例如,将一个灰度图像转换为RGB图像可以使用以下代码: ``` image_gray := read_image('image_gray') image_rgb := convert_image_type(image_gray, 'byte') ``` 这个例子中,我们使用convert_image_type函数将灰度图像image_gray转换为8位RGB图像,并将结果赋值给变量image_rgb。 3. 使用parse_string函数:parse_string函数可以将一个字符串解析为指定的数据类型,如将字符串转换为数字或将字符串转换为日期时间。例如,将一个字符串转换为数字可以使用以下代码: ``` str := '123' num := parse_string(str, 'real') ``` 这个例子中,我们使用parse_string函数将字符串str转换为实数类型,然后将结果赋值给变量num。 需要注意的是,在转换数据类型时,我们需要确保转换的过程中不会丢失精度或导致错误。因此,在进行数据类型转换时,需要谨慎处理。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值