go - ROT13 使用字节而不是字符串
问题描述
我正在尝试将 rot13 翻译添加到我的工具中。客户端基本代码:
....
buf := make([]byte, 1024)
for {
n, err := in.Read(buf)
.....
for _, chunk := range split(r, buf[:n], sizes) {
if _, err := out.Write(chunk); err != nil {
......
因为我希望它使用字节而不是字符串,所以我想出了这个:
https://play.golang.org/p/m3NvoZIyS8g
这个例子有效,期待一些我不理解的额外字节,它们用 *** 下划线:
bytes after ***{***[89 111 117 32 99 114 97 99 107 101 100 32 116 104 101 32 99 111
100 101
32 32 32 32 32 32 32 239 191 189 85 239 191 189 239 191 189 239 191 189 74 40 239 191
189 47 239 191 189 86 239 191 189 45 239 191 189 33] ***0 0}***
string after ***{***You cracked the code �U���J(�/�V�-�! ***%!s(int=0)***
***%!s(bytes.readOp=0)}***
请忽略带有“�U���J(�/�V�-�!”的部分,我只需要对这个“字符串”进行一些确认
我如何摆脱这些额外的“东西”?有什么办法可以更好地实现我的想法吗?
解决方案
这些是 fub 支持数组中剩余的可用字节。
而且由于您将其原始打印,因此它会显示其所有内部。
你想写 :fmt.Printf("bytes after %v\n", fub.Bytes())
只得到写在上面的部分。
字符串表示的相同应用程序,使用fmt.Printf("string after %s\n\n", fub.String())
推荐阅读
- ios - `UITextContentType` 是否适用于 3rd 方应用程序?
- go - 使用 /path/{proxy+} 和 AWS SAM 在 API Gateway 中拥有一个贪婪的 API
- javascript - 在 5.x 版本中添加 TabBarNavigation 时出错
- c++ - Arcball 相机行为异常
- python - 使用 kerberos python 验证凭据
- python - 如何在keras中为CNN可见层选择图像的输入大小
- python - 从 Selenium 到请求
- javascript - onload,addevenlistener 在 Firefox 的子窗口中不起作用
- java - 获得完美幂数的幂
- c - 我在有 struct countOf *rep 的地方出现错误