第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

在 Go 中整數(shù)到字符串的轉(zhuǎn)換是如何工作的?

在 Go 中整數(shù)到字符串的轉(zhuǎn)換是如何工作的?

Go
catspeake 2021-12-07 10:33:42
我今天才開始圍棋,所以這可能很明顯,但我找不到任何關(guān)于它的東西。是什么var x uint64 = 0x12345678; y := string(x)給予y?我知道var x uint8 = 65; y := string(x)會(huì)給出y字節(jié) 65,字符A和常識(shí)會(huì)建議(因?yàn)轭愋痛笥趗int8允許轉(zhuǎn)換為字符串的類型),它們將簡(jiǎn)單地打包到本機(jī)字節(jié)順序(即小端)并分配給變量。情況似乎并非如此:hex.EncodeToString([]byte(y)) ==> "efbfbd"第一個(gè)想法說這是一個(gè)地址,由于一些奇怪的空終止符,最后一個(gè)字節(jié)被遺漏了,但是如果我分配兩個(gè)x和y變量具有兩個(gè)不同的值并將它們打印出來(lái),我會(huì)得到相同的結(jié)果。var x, x2 uint64 = 0x10000000, 0x20000000y, y2 := string(x), string(x2)fmt.Println(hex.EncodeToString([]byte(y))) // "efbfbd"fmt.Println(hex.EncodeToString([]byte(y2))) // "efbfbd"令人抓狂的是,我在任何地方都找不到 string 類型的實(shí)現(xiàn),盡管我可能看起來(lái)還不夠努力。
查看完整描述

1 回答

?
動(dòng)漫人物

TA貢獻(xiàn)1815條經(jīng)驗(yàn) 獲得超10個(gè)贊

這在Spec: Conversions: Conversions to and from a string type 中有介紹:

將有符號(hào)或無(wú)符號(hào)整數(shù)值轉(zhuǎn)換為字符串類型會(huì)生成一個(gè)包含整數(shù)的 UTF-8 表示的字符串。超出有效 Unicode 代碼點(diǎn)范圍的值將轉(zhuǎn)換為"\uFFFD".

如此有效地將數(shù)值轉(zhuǎn)換為 時(shí)string,它只能產(chǎn)生string一個(gè)rune(字符)。由于 Gostrings在內(nèi)存中存儲(chǔ)為 UTF-8 編碼的字節(jié)序列,如果您將其轉(zhuǎn)換string[]byte

將字符串類型的值轉(zhuǎn)換為字節(jié)類型的切片會(huì)產(chǎn)生一個(gè)切片,其連續(xù)元素是字符串的字節(jié)。

當(dāng)您嘗試將0x12345678,0x100000000x20000000值轉(zhuǎn)換為 時(shí)string,由于它們超出了有效 Unicode 代碼點(diǎn)的范圍,因此根據(jù)規(guī)范,它們將轉(zhuǎn)換為"\uFFFD"UTF-8 編碼中的[]byte{239, 191, 189}; 當(dāng)編碼為十六進(jìn)制字符串時(shí):

fmt.Println(hex.EncodeToString([]byte("\uFFFD"))) // Output: efbfbd

或者干脆:

fmt.Printf("%x", "\uFFFD") // Output: efbfbd

閱讀博客文章Go 中的字符串、字節(jié)、符文和字符,了解有關(guān)string內(nèi)部結(jié)構(gòu)的更多詳細(xì)信息。

順便說一句,從 Go 1.5 開始,Go 運(yùn)行時(shí)(大部分)是在 Go 中實(shí)現(xiàn)的,所以這些轉(zhuǎn)換現(xiàn)在是在 Go 中實(shí)現(xiàn)的,可以在runtime包中找到:runtime/string.go,查找intstring()函數(shù)。


查看完整回答
反對(duì) 回復(fù) 2021-12-07
  • 1 回答
  • 0 關(guān)注
  • 231 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)