在Go中如何使用二进制补码表示负整数?
例如:
n := int64(-1)
fmt.Printf("%b", n)
fmt.Println(strconv.FormatInt(n, 2))
两行都打印-1
。结果应该像ffffffffffffffff
。
答案 0 :(得分:3)
对不起,但是您是否想研究内存中如何存储int64值?您将需要使用unsafe
包来强制重新解析go中的值。
此代码可以满足您的要求:
package main
import (
"fmt"
"unsafe"
)
func main() {
a := int64(-1)
fmt.Printf("%x\n", *(*[8]byte)(unsafe.Pointer(&a)))
}
答案 1 :(得分:0)
我还编写了一个func,以编程方式计算 <ubs:unescape>${raw(value)}</ubs:unescape>
的二进制补码,以防您只想计算值:
function print_row()
{
//Logic to print the item
var YourVar= My var value;
// JSPDF, docs: http://rawgit.com/MrRio/jsPDF/master/docs/global.html
// Default export is a4 paper, portrait, using milimeters for units
var doc = new jsPDF({orientation: 'portrait', unit: 'mm', format: [210, 80]});
doc.setFont("helvetica");
doc.setFontType("bold");
doc.setFontSize(16);
doc.setFontType("italic");
doc.text("Your text "+ YourVar, 4, 10);
doc.autoPrint();
// doc.save("a4.pdf");
// this opens a new popup, after this the PDF opens the print window view
// doc.output("bloburi");
window.open(doc.output('bloburl'), '_blank',"toolbar=no,status=no,menubar=no,scrollbars=no,resizable=no,modal=yes,top=200,left=350,width=600,height=400");
};