【问题标题】:converting java String into 7 bit String将java字符串转换为7位字符串
【发布时间】:2012-05-11 05:06:06
【问题描述】:

我正在加密一个字符串说“hello h r u” 使用加密算法,得到加密后的String为b�*-ت5Tr���6=

这个字符串我们不能作为短信发送
所以我想通过将其转换为 7 位来转换为支持短信的格式。
在接收端,我们必须转换回 8 位并解密。
我怎样才能做到这一点?

注意:我已经使用 Base64 转换为支持短信的格式,但长度正在增加。 所以我无法发送更多字符

【问题讨论】:

  • 你问'我怎样才能做到这一点' - 然后你说你已经成功地对它进行了 base 64 编码。所以你已经解决了你的问题,是吗?您唯一的问题是由于 base 64 编码而导致大小增加吗?
  • 是的,我希望尺寸不要增加太多
  • Base 64 encoding has roughly a 33% overhead - 您正在尝试对相同的数据进行编码,但信息密度较低。你逃不掉的。你的实际问题是什么?
  • 我希望大小不会增加太多,而且字符串必须是支持短信的格式,我们可以将 8 位更改为 7 位并发送。如果可以的话,有没有可能怎么做
  • Greg -> 因为 sms 是 7 位,所以它会匹配 base128。如果 sms 7 位和 base128 不使用相同的字符,只需更改 base128 实现中使用的字母并制作他自己的 base128 版本

标签: java android string sms


【解决方案1】:

我假设你的问题是这样的:

如何在不增加消息大小的情况下将二进制数据作为有效的 SMS 文本传输?

答案是 - 你不能 - 至少不能 100% 确定。

您的加密算法可能会创建一些字节数组 (byte[]),一旦您对其进行 Base64 编码,它将增长约 33%(如上述 cmets 所述)。

我看到的唯一选择是尝试在加密之前或之后压缩信息 - 取决于您选择的压缩算法 - 然后 Base64 对其进行编码。这会给你一个更好的机会来限制大小 - 但没有确定性。 (除非你找到一种压缩算法,它承诺对每个输入压缩超过 33%。

另一种方法是将消息跨越两条 SMS 消息 - 假设您被允许这样做。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-03-17
    • 2016-04-21
    • 1970-01-01
    • 2013-01-29
    • 2023-03-29
    • 1970-01-01
    • 2011-01-08
    • 1970-01-01
    相关资源
    最近更新 更多