国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

【Golang】二進(jìn)制字符串轉(zhuǎn)換為數(shù)字

這篇具有很好參考價值的文章主要介紹了【Golang】二進(jìn)制字符串轉(zhuǎn)換為數(shù)字。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

?在本文中,我們將探討如何使用 Go 語言將十六進(jìn)制字符串轉(zhuǎn)換為二進(jìn)制字符串,將不定長整型補(bǔ)碼字符串轉(zhuǎn)換為數(shù)字,以及如何將 IEEE754 標(biāo)準(zhǔn)的單精度(32位)和雙精度(64位)浮點(diǎn)數(shù)字符串轉(zhuǎn)換為數(shù)字。最后,我們將討論如何將布爾類型的二進(jìn)制字符串轉(zhuǎn)換為布爾值。

十六進(jìn)制字符串轉(zhuǎn)二進(jìn)制字符串

package compute
import (
	"errors"
	"strconv"
	"strings"
)
// HexToBinary 將十六進(jìn)制字符串轉(zhuǎn)換為二進(jìn)制字符串。
func HexToBinary(hex string) (string, error) {
	decimal, err := strconv.ParseInt(hex, 16, 64)
	if err != nil {
		return "", err
	}
	// 使用 strconv.FormatInt 把整數(shù)轉(zhuǎn)換為二進(jìn)制字符串。
	binaryStr := strconv.FormatInt(decimal, 2)
	// 計(jì)算需要補(bǔ)充的0的個數(shù)。
	diff := len(hex)*4 - len(binaryStr) 
	// 補(bǔ)全至正確的長度。
	return strings.Repeat("0", diff) + binaryStr, nil
}

這段代碼首先定義了一個函數(shù) HexToBinary,它接受一個十六進(jìn)制字符串,并返回相應(yīng)的二進(jìn)制字符串。它使用 strconv.ParseInt 函數(shù)將十六進(jìn)制字符串轉(zhuǎn)換為整數(shù),然后用 strconv.FormatInt 轉(zhuǎn)換為二進(jìn)制字符串。如果輸入的字符串不能正確轉(zhuǎn)換,函數(shù)將返回一個錯誤。<鏈接>

不定長整型補(bǔ)碼字符串轉(zhuǎn)數(shù)字

package compute
import (
	"errors"
	"math"
	"strconv"
)
// BinaryIntegerStringToInt 將不定長整型補(bǔ)碼字符串轉(zhuǎn)換為數(shù)字。
func BinaryIntegerStringToInt(binaryStr string) (num int64, err error) {
	// 解析二進(jìn)制補(bǔ)碼字符串為整數(shù)。
	num, err = strconv.ParseInt(binaryStr, 2, 64)
	if err != nil {
		return
	}
	// 如果最高位是1,則表示這是一個負(fù)數(shù),需要進(jìn)行補(bǔ)碼轉(zhuǎn)換。
	if binaryStr[:1] == "1" {
		num -= int64(math.Pow(2, float64(len(binaryStr))))
	}
	return
}

這個函數(shù) BinaryIntegerStringToInt 用于將不定長的二進(jìn)制補(bǔ)碼字符串轉(zhuǎn)換為整數(shù)。如果最高位是1,則表示這是一個負(fù)數(shù),需要從結(jié)果中減去 2^len(binaryStr) 以得到實(shí)際的數(shù)值。<鏈接>

IEEE754 標(biāo)準(zhǔn)浮點(diǎn)數(shù)字符串轉(zhuǎn)數(shù)字

單精度浮點(diǎn)數(shù)

package compute
import (
	"errors"
	"math"
	"strconv"
)
// BinaryFloatStringToFloat 將IEEE754標(biāo)準(zhǔn)單精度浮點(diǎn)數(shù)字符串轉(zhuǎn)為數(shù)字。
func BinaryFloatStringToFloat(binaryStr string) (float64, error) {
	// 確保字符串長度為32位。
	n := 32 - len(binaryStr)
	if n >= 0 && n < 32 {
		binaryStr = strings.Repeat("0", n) + binaryStr
	} else {
		return 0, errors.New("unsupported binary length")
	}
	// 解析符號位。
	sign := 1.0
	if binaryStr[0] == '1' {
		sign = -1.0
	}
	// 解析指數(shù)位。
	exponent, _ := strconv.ParseInt(binaryStr[1:9], 2, 64)
	exponent -= 127
	// 解析尾數(shù)位。
	mantissa := float64(0)
	for i := 9; i < len(binaryStr); i++ {
		if binaryStr[i] == '1' {
			mantissa += 1 / (math.Pow(2, float64(i-8)))
		}
	}
	// 計(jì)算浮點(diǎn)數(shù)值。
	result := sign * (1 + mantissa) * (math.Pow(2, float64(exponent)))
	return result, nil
}

這段代碼定義了一個函數(shù) BinaryFloatStringToFloat,它將單精度浮點(diǎn)數(shù)的二進(jìn)制字符串轉(zhuǎn)換為 float64 類型的數(shù)字。它首先檢查字符串的長度是否為32位,如果不是,則補(bǔ)足至32位。然后,它解析符號位、指數(shù)位和尾數(shù)位,并計(jì)算出最終的浮點(diǎn)數(shù)值。<鏈接>

雙精度浮點(diǎn)數(shù)

package compute
import (
	"errors"
	"math"
	"strconv"
)
// BinaryDoubleStringToFloat 將IEEE754標(biāo)準(zhǔn)雙精度浮點(diǎn)數(shù)字符串轉(zhuǎn)為數(shù)字。
func BinaryDoubleStringToFloat(binaryStr string) (float64, error) {
	// 確保字符串長度為64位。
	n := 64 - len(binaryStr)
	if n >= 0 && n < 64 {
		binaryStr = strings.Repeat("0", n) + binaryStr
	} else {
		return 0, errors.New("unsupported binary length")
	}
	// 解析符號位。
	sign := 1.0
	if binaryStr[0] == '1' {
		sign = -1.0
	}
	// 解析指數(shù)位。
	exponent, _ := strconv.ParseInt(binaryStr[1:12], 2, 64)
	exponent -= 1023
	// 解析尾數(shù)位。
	mantissa := float64(0)
	for i := 12; i < len(binaryStr); i++ {
		if binaryStr[i] == '1' {
			mantissa += 1 / float64(math.Pow(2, float64(i-11)))
		}
	}
	// 計(jì)算浮點(diǎn)數(shù)值。
	result := sign * (1 + mantissa) * math.Pow(2, float64(exponent))
	return result, nil
}

這段代碼定義了一個函數(shù) BinaryDoubleStringToFloat,它將雙精度浮點(diǎn)數(shù)的二進(jìn)制字符串轉(zhuǎn)換為 float64 類型的數(shù)字。它的處理過程與單精度浮點(diǎn)數(shù)的轉(zhuǎn)換類似,只是字符串的長度要求是64位,并且指數(shù)位的偏移量不同。<鏈接>

布爾類型字符串轉(zhuǎn)布爾類型

package compute
import "strings"
// BinaryBooleanStringToBoolean 將布爾類型的二進(jìn)制字符串轉(zhuǎn)換為布爾值。
func BinaryBooleanStringToBoolean(binaryStr string) bool {
	return binaryStr == "1"
}

這個函數(shù) BinaryBooleanStringToBoolean 接受一個二進(jìn)制字符串,并返回對應(yīng)的布爾值。如果字符串為 “1”,則返回 true;如果為其他任何字符,則返回 false。

測試

func main() {
	hexString := "0f6561f02f1505"
	binaryString, _ := HexToBinary(hexString)
	fmt.Printf("十六進(jìn)制字符串:%s\n二進(jìn)制字符串:%s\n\n", hexString, binaryString)

	binaryString = "10110100101"
	resultInt, _ := BinaryIntegerStringToInt(binaryString)
	fmt.Printf("二進(jìn)制字符串:%s\n轉(zhuǎn)換結(jié)果:%d\n\n", binaryString, resultInt)

	binaryString = "11000001010010000000000000000000"
	result, _ := BinaryFloatStringToFloat(binaryString)
	fmt.Printf("二進(jìn)制字符串:%s\n轉(zhuǎn)換結(jié)果:%.2f\n\n", binaryString, result)

	binaryString = "0100000000101001100100011010000000000000000000000000000000000000"
	result, _ = BinaryDoubleStringToFloat(binaryString)
	fmt.Printf("二進(jìn)制字符串:%s\n轉(zhuǎn)換結(jié)果:%.5f\n\n", binaryString, result)

	fmt.Printf("二進(jìn)制字符串:%s\n轉(zhuǎn)換結(jié)果:%t\n\n", "0", BinaryBooleanStringToBoolean("0"))
}

測試結(jié)果

【Golang】二進(jìn)制字符串轉(zhuǎn)換為數(shù)字,Golang,golang,算法,開發(fā)語言

?以上函數(shù)展示了如何使用 Go 語言進(jìn)行不同類型數(shù)字和布爾值的轉(zhuǎn)換。在實(shí)際應(yīng)用中,這些函數(shù)可以作為處理二進(jìn)制數(shù)據(jù)的工具,例如在解析網(wǎng)絡(luò)數(shù)據(jù)包、處理計(jì)算機(jī)架構(gòu)相關(guān)的數(shù)據(jù)或者在算法中需要進(jìn)行數(shù)值計(jì)算時。確保在實(shí)際使用這些函數(shù)時,輸入?yún)?shù)符合預(yù)期,以避免可能的運(yùn)行時錯誤。文章來源地址http://www.zghlxwxcb.cn/news/detail-792539.html

到了這里,關(guān)于【Golang】二進(jìn)制字符串轉(zhuǎn)換為數(shù)字的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • java案例5-4 字符串轉(zhuǎn)換為二進(jìn)制

    java案例5-4 字符串轉(zhuǎn)換為二進(jìn)制

    本例要求編寫一個程序,從鍵盤錄入一個字符串,將字符串轉(zhuǎn)換為二進(jìn)制數(shù)。在轉(zhuǎn)換時,將字符串中的每個字符單獨(dú)轉(zhuǎn)換為一個二進(jìn)制數(shù),將所有二進(jìn)制數(shù)連接起來進(jìn)行輸出。 案例在實(shí)現(xiàn)時,要求使用Math類、String類以及Scanner等常見Java API的常用方法. 2.運(yùn)行結(jié)果 學(xué)會分析“十

    2024年02月09日
    瀏覽(42)
  • C語言二進(jìn)制數(shù)據(jù)和16進(jìn)制字符串互轉(zhuǎn)

    知識點(diǎn):結(jié)構(gòu)體中的“伸縮型數(shù)組成員”(C99新增) C99新增了一個特性:伸縮型數(shù)組成員(flexible array member),利用這項(xiàng)特性聲明的結(jié)構(gòu),其最后一個數(shù)組成員具有一些特性。第1個特性是,該數(shù)組不會立即存在。第2個特性是,使用這個伸縮型數(shù)組成員可以編寫合適的代碼,就

    2024年02月13日
    瀏覽(28)
  • 【?MySQL | 數(shù)據(jù)類型(二)】字符串 | 二進(jìn)制類型

    【?MySQL | 數(shù)據(jù)類型(二)】字符串 | 二進(jìn)制類型

    ?歡迎來到小K的MySQL專欄,本節(jié)將為大家?guī)鞰ySQL字符串 | 二進(jìn)制類型類型的分享 ? 5 字符串類型 字符串類型用來存儲字符串?dāng)?shù)據(jù),還可以存儲圖片和聲音的二進(jìn)制數(shù)據(jù)。字符串可以區(qū)分或者不區(qū)分大小寫的串比較,還可以進(jìn)行正則表達(dá)式的匹配查找。 下表中列出了 MySQL 中

    2024年02月11日
    瀏覽(23)
  • LeetCode_字符串_簡單_67.二進(jìn)制求和

    給你兩個二進(jìn)制字符串 a 和 b,以二進(jìn)制字符串的形式返回它們的和。 示例 1: 輸入:a = “11”, b = “1” 輸出:“100” 示例 2: 輸入:a = “1010”, b = “1011” 輸出:“10101” 提示: 1 = a.length, b.length = 10 4 a 和 b 僅由字符 ‘0’ 或 ‘1’ 組成 字符串如果不是 “0” ,就不含前

    2024年02月09日
    瀏覽(32)
  • 【JavaScript數(shù)據(jù)結(jié)構(gòu)與算法】字符串類(計(jì)算二進(jìn)制子串)

    【JavaScript數(shù)據(jù)結(jié)構(gòu)與算法】字符串類(計(jì)算二進(jìn)制子串)

    個人簡介 ?? 個人主頁: 前端雜貨鋪 ???♂? 學(xué)習(xí)方向: 主攻前端方向,也會涉及到服務(wù)端(Node.js) ?? 個人狀態(tài): 在校大學(xué)生一枚,已拿多個前端 offer(秋招) ?? 未來打算: 為中國的工業(yè)軟件事業(yè)效力 n 年 ?? 推薦學(xué)習(xí):??前端面試寶典 ??Vue2 ??Vue3 ??Vue2/3項(xiàng)目

    2024年02月05日
    瀏覽(102)
  • 2023-06-14 LeetCode每日一題(二進(jìn)制字符串前綴一致的次數(shù))

    點(diǎn)擊跳轉(zhuǎn)到題目位置 給你一個長度為 n 、下標(biāo)從 1 開始的二進(jìn)制字符串,所有位最開始都是 0 。我們會按步翻轉(zhuǎn)該二進(jìn)制字符串的所有位(即,將 0 變?yōu)?1)。 給你一個下標(biāo)從 1 開始的整數(shù)數(shù)組 flips ,其中 flips[i] 表示對應(yīng)下標(biāo) i 的位將會在第 i 步翻轉(zhuǎn)。 二進(jìn)制字符串 前綴

    2024年02月08日
    瀏覽(98)
  • 51單片機(jī)LCD1602液晶屏顯示字符,字符串,(有)無符號整數(shù),十六進(jìn)制數(shù),二進(jìn)制數(shù)等

    51單片機(jī)LCD1602液晶屏顯示字符,字符串,(有)無符號整數(shù),十六進(jìn)制數(shù),二進(jìn)制數(shù)等

    LCD1602液晶顯示器是廣泛使用的一種字符型液晶顯示模塊。液晶顯示模塊具有體積小、功耗低、顯示內(nèi)容豐富、超薄輕巧等優(yōu)點(diǎn),在嵌入式應(yīng)用系統(tǒng)中得到越來越廣泛的應(yīng)用,這講中向大家介紹的LCD1602?液晶顯示模塊(其內(nèi)部控制器為HD44780?芯片),它可以顯示兩行,每行16?個字

    2024年02月04日
    瀏覽(33)
  • Python每日一練(20230420) 數(shù)組逐位判斷、交錯字符串、二進(jìn)制求和

    Python每日一練(20230420) 數(shù)組逐位判斷、交錯字符串、二進(jìn)制求和

    目錄 1. 數(shù)組逐位判斷???? 2. 交錯字符串?????? 3. 二進(jìn)制求和???? ?? 每日一練刷題專欄??? Golang每日一練 專欄 Python每日一練 專欄 C/C++每日一練 專欄 Java每日一練 專欄 比如有以下數(shù)組: a1: 1,0,0,1,0,0,0,1 a2: 0,0,0,0,1,1,1,1 a3: 0,1,0,1,0,1,0,0 a4: 1,0,1,1,1,1,0,0 a5: ....... 抓取三個數(shù)

    2024年02月15日
    瀏覽(90)
  • 算法-回溯相關(guān)問題-生成所有n位長的二進(jìn)制字符串 Java版

    生成所有n位長的二進(jìn)制字符串。假設(shè)A[0…n-1]是一個大小為n的數(shù)組。

    2024年02月16日
    瀏覽(18)
  • 數(shù)據(jù)結(jié)構(gòu)與算法之字符串: Leetcode 696. 計(jì)數(shù)二進(jìn)制子串 (Typescript版)

    計(jì)數(shù)二進(jìn)制子串 https://leetcode.cn/problems/count-binary-substrings/ 描述 給定一個字符串 s,統(tǒng)計(jì)并返回具有相同數(shù)量 0 和 1 的非空(連續(xù))子字符串的數(shù)量,并且這些子字符串中的所有 0 和所有 1 都是成組連續(xù)的。 重復(fù)出現(xiàn)(不同位置)的子串也要統(tǒng)計(jì)它們出現(xiàn)的次數(shù)。 示例 1: 示

    2024年02月01日
    瀏覽(96)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包