정수에서 이진 표현으로 변환
Go에 숫자 유형 중 하나를 이진 숫자 형식으로 변환하기위한 내장 기능이 있는지 누구든지 아이디어를 얻었습니다.
예를 들어 123
입력 인 경우 문자열 "1111011"
은 출력이됩니다.
strconv
패키지가 FormatInt
을 받아들이는, int64
당신은 기본을 지정할 수 있습니다.
n := int64(123)
fmt.Println(strconv.FormatInt(n, 2)) // 1111011
데모 : http://play.golang.org/p/leGVAELMhv
http://golang.org/pkg/strconv/#FormatInt
func FormatInt(i int64, base int) string
FormatInt는 2 <= base <= 36에 대해 주어진 기수로 i의 문자열 표현을 반환합니다. 결과는 숫자 값> = 10에 대해 소문자 'a'에서 'z'를 사용합니다.
fmt 패키지 도 참조하십시오 .
n := int64(123)
fmt.Printf("%b", n) // 1111011
이 코드는 큰 정수에서 작동합니다 *big.Int
.
x := big.NewInt(123)
s := fmt.Sprintf("%b", x)
// s == "1111011"
인터페이스를 *big.Int
구현 하기 때문 fmt.Formatter
입니다.
https://stackoverflow.com/a/23317788/871134 에서 가져옴
@Mark가 제공 한 답변을 기반으로 구축
OP가 정수를 인쇄하는 방법을 물었지만, 눈이 흔들리지 않고 64 비트 이상의 데이터를보고 싶습니다.
/* --- Credit to Dave C in the comments --- */
package main
import (
"bytes"
"fmt"
)
func main() {
fmt.Printf("<%s>\n", fmtBits([]byte{0xDE, 0xAD, 0xBE, 0xEF, 0xF0, 0x0D, 0xDE, 0xAD, 0xBE, 0xEF, 0xF0, 0x0D}))
// OUTPUT:
// <11011110 10101101 10111110 11101111 11110000 00001101 11011110 10101101 10111110 11101111 11110000 00001101>
}
func fmtBits(data []byte) []byte {
var buf bytes.Buffer
for _, b := range data {
fmt.Fprintf(&buf, "%08b ", b)
}
buf.Truncate(buf.Len() - 1) // To remove extra space
return buf.Bytes()
}
play.golang.org에서이 코드를 참조하세요.
이진 형식으로 음수를 올바르게 나타내려면 안전하지 않은 포인터를 사용해야합니다.
package main
import (
"fmt"
"strconv"
"unsafe"
)
func bInt(n int64) string {
return strconv.FormatUint(*(*uint64)(unsafe.Pointer(&n)), 2)
}
func main() {
fmt.Println(bInt(-1))
}
https://play.golang.org/p/GxXjjWMyC4x
참조 URL : https://stackoverflow.com/questions/13870845/converting-from-an-integer-to-its-binary-representation
'code' 카테고리의 다른 글
문자열의 문자를 알파벳순으로 정렬하는 방법은 무엇입니까? (0) | 2021.01.10 |
---|---|
내 Django 프로젝트를 'git pull'한 후 Gunicorn을 다시 시작 / 다시로드하는 더 좋은 방법 (Upstart를 통해) (0) | 2021.01.10 |
숫자, 구두점 및 공백을 무시하고 문장의 단어 수를 계산하는 방법은 무엇입니까? (0) | 2021.01.10 |
Python try finally 블록 반환 (0) | 2021.01.10 |
Docker의 컨테이너 이름은 언제 사용합니까? (0) | 2021.01.10 |