加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

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

发布时间:2020-12-14 03:40:25 所属栏目:大数据 来源:网络整理
导读:转载地址:http://www.voidcn.com/article/p-ketagzof-bcu.html 最近在项目中遇到一个问题: ??????? 程序中用到了MD5加密和IDEA加密,通过这些算法得出的结果均是字节码,但是我程序中使用一个通讯接口,其接受的参数类型为String。所以在发送时,需要转换

转载地址:http://www.voidcn.com/article/p-ketagzof-bcu.html

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

??????? 程序中用到了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[],这样数据就不会出现错误。
对字符编码没有研究过,细节不是很清楚,此乃从网上搜集的解决方法,在此记录,以方便以后翻查。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读