new tab是啥
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了new tab是啥相关的知识,希望对你有一定的参考价值。
new tab是什么
的,用一般文本编辑器打开是看不到任何可用信息。解密内容的方法是对文件所有字节与0xDD进行异或操作。以下是解密文件的源码(C#):
private void button1_Click(object sender, System.EventArgs e)
// Create the reader for data.
FileStream fs = new FileStream("c:\\grim.tab", FileMode.Open, FileAccess.Read);
BinaryReader r = new BinaryReader(fs);
FileStream fs2 = new FileStream("c:\\text.txt", FileMode.Create);
BinaryWriter w = new BinaryWriter(fs2);
fs.Position = 4;
while(fs.Position < fs.Length)
w.Write((byte)(r.ReadByte()^ 0xdd));
r.Close();
w.Close();
fs.Close();
fs2.Close();
解密后的文件内容就是一般的文本,可以看到所有游戏对话都在其中。下面节选文件内容的2段进行分析:
sito030 Oh yeah, yeah. Yeah. That is what I told him.
sito031 Are you kidding me?
sito032 gave him the idea in the first place!
可以看出左边是说话人的名称标识,右边是说话的内容,分割这两者的是看似一个空格,其实是ASCII码表中的制表符Tab,16进制表示是0x09。
对游戏角本的汉化修改此文件的内容为中文就可以了,还有一点值得注意,修改完此文件后无需再对其反加密,只要将解密的文件保存成以前加密文件的文件名覆盖即可。应该是游戏运行时候会对文件是否加密进行判断 参考技术A 一个标签页,类似客户端程序中的那种。本回答被提问者采纳 参考技术B 让我猜是 新表
::new 是啥意思?
【中文标题】::new 是啥意思?【英文标题】:What does ::new mean?::new 是什么意思? 【发布时间】:2012-12-18 07:04:16 【问题描述】:在检查 MS directX 11 DXUT 示例时,出现以下代码:
template<typename TYPE> HRESULT CGrowableArray <TYPE>::SetSize( int nNewMaxSize )
int nOldSize = m_nSize;
if( nOldSize > nNewMaxSize )
assert( m_pData );
if( m_pData )
// Removing elements. Call dtor.
for( int i = nNewMaxSize; i < nOldSize; ++i )
m_pData[i].~TYPE();
// Adjust buffer. Note that there's no need to check for error
// since if it happens, nOldSize == nNewMaxSize will be true.)
HRESULT hr = SetSizeInternal( nNewMaxSize );
if( nOldSize < nNewMaxSize )
assert( m_pData );
if( m_pData )
// Adding elements. Call ctor.
for( int i = nOldSize; i < nNewMaxSize; ++i )
::new ( &m_pData[i] ) TYPE;
return hr;
这可以在我的 DXSDK 版本(2010 年 6 月)的第 428 行的 DXUTmisc.h 中找到。我想知道 ::new 的事情....我正在尝试谷歌并搜索堆栈溢出但似乎搜索引擎在我输入“::new”时丢弃了两个冒号在搜索栏中....
【问题讨论】:
::
是 scope resolution operator 并且它本身指定了全局范围。它确保从全局范围调用 new
。
【参考方案1】:
::new
调用意味着程序正在尝试使用全局 new
运算符来分配空间,而不是使用在类或命名空间范围内定义的任何 new
运算符。特别是,这段代码试图使用名为 placement new
的东西,其中正在创建的对象被放置在内存中的特定位置。通过显式回调到全局作用域中,该函数确保 this 正确使用新位置,并且不会意外调用作用域链中某处引入的不同分配函数。
希望这会有所帮助!
【讨论】:
+1 用于指出 XY 问题。 (他们问过 X,但确实需要知道 Y) +1 用于指出新的展示位置。我应该注意到这一点。 谢谢,我认为这主要是新展示位置的问题。实际的内存分配是在 SetSizeInternal() 行上通过 realloc 调用完成的。所以这里的new其实只是调用TYPE的构造函数,如果有的话。 那么 TYPE 是什么意思? (即::new (&x) int
)int 是做什么的?
@David- 这里,TYPE
是一个模板参数,指示正在存储的对象类型。 ::new (&x) int
行的意思是“在指针&x
所指的内存位置构造一个int
类型的对象。【参考方案2】:
::new 确保调用全局的 new 运算符,即标准的 new 运算符。注意 :: new 之前的表示全局范围。
【讨论】:
以上是关于new tab是啥的主要内容,如果未能解决你的问题,请参考以下文章