- r - 以节省内存的方式增长 data.frame
- ruby-on-rails - ruby/ruby on rails 内存泄漏检测
- android - 无法解析导入android.support.v7.app
- UNIX 域套接字与共享内存(映射文件)
我想在 Go
中翻译我的 python
程序,将 unicode
字符串转换为 UCS-2
HEX
字符串。
在 python 中,这很简单:
u"Bien joué".encode('utf-16-be').encode('hex')
-> 004200690065006e0020006a006f007500e9
我是 Go
的初学者,我发现的最简单的方法是:
package main
import (
"fmt"
"strings"
)
func main() {
str := "Bien joué"
fmt.Printf("str: %s\n", str)
ucs2HexArray := []rune(str)
s := fmt.Sprintf("%U", ucs2HexArray)
a := strings.Replace(s, "U+", "", -1)
b := strings.Replace(a, "[", "", -1)
c := strings.Replace(b, "]", "", -1)
d := strings.Replace(c, " ", "", -1)
fmt.Printf("->: %s", d)
}
str: Bien joué
->: 004200690065006E0020006A006F007500E9
Program exited.
我真的认为这显然效率不高。我该如何改进它?
谢谢
最佳答案
把这个转换做成一个函数,以后你就可以很容易地改进转换算法。例如,
package main
import (
"fmt"
"strings"
"unicode/utf16"
)
func hexUTF16FromString(s string) string {
hex := fmt.Sprintf("%04x", utf16.Encode([]rune(s)))
return strings.Replace(hex[1:len(hex)-1], " ", "", -1)
}
func main() {
str := "Bien joué"
fmt.Println(str)
hex := hexUTF16FromString(str)
fmt.Println(hex)
}
输出:
Bien joué
004200690065006e0020006a006f007500e9
注意:
你说“将 unicode 字符串转换为 UCS-2 字符串”,但你的 Python 示例使用 UTF-16:
u"Bien joué".encode('utf-16-be').encode('hex')
Q: What is the difference between UCS-2 and UTF-16?
A: UCS-2 is obsolete terminology which refers to a Unicode implementation up to Unicode 1.1, before surrogate code points and UTF-16 were added to Version 2.0 of the standard. This term should now be avoided.
UCS-2 does not describe a data format distinct from UTF-16, because both use exactly the same 16-bit code unit representations. However, UCS-2 does not interpret surrogate code points, and thus cannot be used to conformantly represent supplementary characters.
Sometimes in the past an implementation has been labeled "UCS-2" to indicate that it does not support supplementary characters and doesn't interpret pairs of surrogate code points as characters. Such an implementation would not handle processing of character properties, code point boundaries, collation, etc. for supplementary characters.
关于go - 字符串到 UCS-2,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30556584/
我有这个 UC: this.show = function() { ... var myvar = "Text of the var." this.Property1 = m
在浏览 unicode 文档时,我有时会看到术语 UTF-16 可与 UCS-2 互换使用,也可与 UTF-32 和 UCS-4 互换使用。我想知道 UTF-8 是否也有一个很酷的昵称,比如 UCS-
我有 50% 的流量来自 UC 浏览器。在新版本的 UC 浏览器中看不到谷歌广告,那么我如何从我的网站获得良好的收入? 我过去 7 天使用过 UC Union 广告网络,但它产生了 0 美元的收入。我
ucs-4字符'🤣'的unicode值为0001f923,复制到java代码中时会自动更改为\uD83E\uDD23对应的值在 IntelliJ IDEA 中。 Java仅支持ucs-2,因此发生了
正如标题所说的那样。 $ ./configure --help | grep -i ucs --enable-unicode[=ucs[24]] 查了官方文档,发现是这样的: sys.maxuni
只要我没记错,UCS 和 BFS 是一样的,唯一的区别是它不是扩展最浅的节点,而是扩展路径成本最低的节点。 (也为此使用 PriorityQueue 而不是 Queue)所以我复制了我的 BFS 代码
我正在尝试编译/构建我的项目,但我在下面收到此错误: [dcc32 fatal error ] 不支持 F2438 UCS-4 文本编码。转换为 UCS-2 或 UTF-8 IDE 没有显示我需要转换
下面是一个简单的标记。谁能帮我写一个脚本,该脚本仅在 uc mini 浏览器中显示带有“信息框”类的 div。它应该隐藏在浏览器的其余部分。 UC Mini .info-box { d
最近几天我一直被这个问题困扰,我有一个使用 Angular 构建的单页应用程序网站。 我在网站的一个部分实现了 div 的水平滚动(旋转木马类型 View ),在其他浏览器上运行良好。 然而,在 UC
我已经安装了来自 Entrust 的 UC 多域 SSL 证书,用于两个 OpenCart 安装和一个公司域,所有这些都托管在同一 IP。 我的证书上有 3 个域,顺序如下 www.example.c
我目前正在处理的项目需要与我们不制作的客户端系统交互,因此我们无法控制数据的发送方式。问题是在 C# 中工作,它似乎对 UCS-2 没有任何支持,对 big-endian 的支持也很少。 (据我所知)
我试图在我的 42 个字符密码中随机获取小写/大写。不知何故我反而得到: ucclcjuczlclucmlc0lcdlc5lc0ucdlccucmucquc5ucslc4lckucxuctlcvlcq
我正在尝试构建此 UI,因为浏览器屏幕长时间停留在一个部分并且无法在网络上找到任何相关主题。我想实现作为对话框弹出的 UC 浏览器设置/汉堡菜单。我如何开始这件事 images link contai
这是我的代码: ` .column1{ width:calc(100% - 100px); float:left; } .column2{ width:100px; float:left; } `
我的问题是特定于浏览器的。我的 css 在移动设备上的 UC 浏览器中无法像在其他浏览器中一样正常工作。 我想将占位符垂直居中对齐。但令我惊讶的是,垂直对齐似乎有点偏离。 这是我从UC浏览器截取的截图
我有一个文本文件,它是使用某些 Microsoft 报告工具创建的。文本文件在开头包含 BOM 0xFFFE,然后是 ASCII 字符输出,字符之间有空值(即“F.i.e.l.d.1.”)。我可以使用
我想在 Go 中翻译我的 python 程序,将 unicode 字符串转换为 UCS-2 HEX 字符串。 在 python 中,这很简单: u"Bien joué".encode('utf-16-
虽然researching options用于在可能很大的SQL Server数据库中存储大多数英语但有时不是的数据,但我倾向于将大多数字符串数据存储为UTF-8编码。 但是,Microsoft之所以
我在我的项目中使用 ATMEGA128 微 Controller 和 AVR studio。我正在使用接收中断 ISR_USART0 来接收 8 个字节的数据作为数据包,并且在完成接收数据后调用该中断
我已经制作了这个脚本,但我有一个问题: $(document).ready(function() { $('html').html(function(i, v) { var searchM
我是一名优秀的程序员,十分优秀!