下面有一个简单的脚本将一个字节写入文件:
set wf [open "test.bin" "w"]
set int_result 0x80
puts -nonewline $wf [binary format c [expr {$int_result}]]
close $wf
exit
令人惊讶的是,该文件将包含0x3F,而不是0x80。 谁能解释一下发生了什么?
非常感谢, 梅德
答案 0 :(得分:2)
默认情况下,Tcl更喜欢读写文本文件,这意味着它会对数据进行大量转换,以便您进入Tcl并转出文件。使用二进制数据时,您希望关闭这些数据。在wb
的通话中使用w
代替open
(就像在C stdio' fopen()
通话中一样),或使用fconfigure
来放置set wf [open "test.bin" wb]
打开后将通道转换为二进制模式。
set wf [open "test.bin" w]
# It's the -translation option for historical/backward-compatibility reasons
fconfigure $wf -translation binary
b
他们是等同的; open
在内部fconfigure
调用if(t==(a[i]))
{
if(t1==(a[i+1]))
{
count++;
continue;
}
continue;
}
调用({1}}以完全设置该选项。
答案 1 :(得分:1)
快速修复:使用
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<a href="console-1.html">I should cause an alert().</a><br>
<a href="one-console.html">I should cause an alert().</a><br>
<a href="con.html">I should NOT cause an alert().</a><br>
<a href="sole-1.html">I should NOT cause an alert().</a>
以二进制模式打开文件。