Floating point TCL:一个变量存储一个浮点值,如何在屏幕上以十六进制打印?

Floating point TCL:一个变量存储一个浮点值,如何在屏幕上以十六进制打印?,floating-point,hex,tcl,data-conversion,Floating Point,Hex,Tcl,Data Conversion,如何在tcl中存储浮点数的十六进制表示: % set a 1.3 1.3 % puts $a 1.3 我想将十六进制表示形式存储在另一个变量中,然后在屏幕上打印或用于其他目的 如何将浮点数的十六进制表示形式存储在 Tcl: 你的一个问题已经得到了回答,应该会给你指出正确的方向:将给定的浮点转换为32位整数(这称为IEEE 754二进制32表示),然后将二进制32表示转换为十六进制形式。例如,在Tcl(8.6+)中,您可以通过以下方式实现: % set a 1.3 1.3 % set ahex

如何在tcl中存储浮点数的十六进制表示:

% set a 1.3
1.3
% puts $a
1.3
我想将十六进制表示形式存储在另一个变量中,然后在屏幕上打印或用于其他目的

如何将浮点数的十六进制表示形式存储在 Tcl:

你的一个问题已经得到了回答,应该会给你指出正确的方向:将给定的浮点转换为32位整数(这称为IEEE 754二进制32表示),然后将二进制32表示转换为十六进制形式。例如,在Tcl(8.6+)中,您可以通过以下方式实现:

% set a 1.3
1.3
% set ahex [binary encode hex [binary format f $a]]; # hex will be in big-endian form!
6666a63f
按照前面的答案,您可以使用以下方法反转操作:

% binary scan [binary format i 0x$ahex] R x
1
% set x
1.2999999523162842
注意使用
R
说明符(大端)进行
二进制扫描,而不是
f
(小或大,取决于平台),因为生成的十六进制是大端形式。通常,您必须注意binary32转换中的endianness

如何将浮点数的十六进制表示形式存储在 Tcl:

你的一个问题已经得到了回答,应该会给你指出正确的方向:将给定的浮点转换为32位整数(这称为IEEE 754二进制32表示),然后将二进制32表示转换为十六进制形式。例如,在Tcl(8.6+)中,您可以通过以下方式实现:

% set a 1.3
1.3
% set ahex [binary encode hex [binary format f $a]]; # hex will be in big-endian form!
6666a63f
按照前面的答案,您可以使用以下方法反转操作:

% binary scan [binary format i 0x$ahex] R x
1
% set x
1.2999999523162842

注意使用
R
说明符(大端)进行
二进制扫描,而不是
f
(小或大,取决于平台),因为生成的十六进制是大端形式。通常,您必须注意binary32转换中的endianness。

第一部分中的ahex不是以0x开头的,十六进制值没有0x。如何添加0x?我试过设置ahex“0x”[二进制编码十六进制[二进制格式f$a]];但这不起作用。请使用:
设置ahex“0x[二进制编码…]”
,您应该确保涵盖了Tcl基础知识()。第一部分中的ahex不以0x开头,十六进制值不包含0x。如何添加0x?我试过设置ahex“0x”[二进制编码十六进制[二进制格式f$a]];但这不起作用。请使用:
设置ahex“0x[binary encode…]”
,您应该确保已经介绍了Tcl基础知识()。请花一些时间阅读。请花一些时间阅读