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

如何将java.lang.float编码为TH3IFMw?

发布时间:2020-12-15 02:27:37 所属栏目:Java 来源:网络整理
导读:我需要解析一些已编码 java输出的基本类型(整数,浮点数,双精度数,浮点数)的数据.我将此功能添加到现有的一组python脚本中,因此用 Java重写它实际上并不是一种选择.我想重新实现和/或使用python库来解码数据(例如,浮点数的TH3IFMw). 我不认识这种编码.我正在
我需要解析一些已编码 java输出的基本类型(整数,浮点数,双精度数,浮点数)的数据.我将此功能添加到现有的一组python脚本中,因此用 Java重写它实际上并不是一种选择.我想重新实现和/或使用python库来解码数据(例如,浮点数的TH3IFMw).

我不认识这种编码.我正在处理发送到Google Web Toolkit的请求,并且基于源here和here – 我认为它是string.ValueOf – 但这是不正确的.有谁认出来了吗?

解决方法

我认为这是编码一个long int,而不是float.特别是,它可能是0x0000004c7dc814cc,但可能是0x00000131f7205330.

我的理由……

通过查看链接到的代码,它看起来不像浮动一样远远不同于标准的valueOf实现绝对不会像这样做.

另一方面,字符串TH3IFMw像base64编码的字符串一样查找全世界.我想不出许多其他使用高位字母,低位字母和数字的常见编码.通过相同的代码,我只能找到一个对base64 … line 575 of StreamWriter的引用,它处理编码长实例.这是链接代码的唯一部分,它甚至可以远程生成您观察到的输出.

查看字符串的大小…假设它是base64,它缺少一个trailing = padding / alignment字符,但是为了简洁起见,base64的一些实现省略了这些.将其添加回(TH3IFMw =)并解码为base64,这将导致十六进制值0x4c7dc814cc.这只有5个字节,这有点奇怪.但这确实意味着它可能不是浮点数(4个字节)或双重(8个字节).

但这可能适合575行的长编码…查看Base64Utils.toBase64的文档,它引用了“省略所有零位的前导组”这一事实.如果原始长度为0x0000004c7dc814cc,这将解释5字节值.

但是,文档的措辞令人沮丧地含糊不清(我现在没有java gwt可供测试). “所有零比特的前导组”可能意味着它们省略了全部为零的源字节,但它也可能意味着它们省略了编码的base64字符中的前导A字符(A代表base64中的6 0位).如果是这种情况,那么实际的base64字符串是ATH3IFMw,它解码为长值0x00000131f7205330.

如果您可以在您提供的内容中找到这些数字中的任何一个作为输入,那么这可能就是正在发生的事情.如果不是……我担心我会难过.

(编辑:李大同)

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

    推荐文章
      热点阅读