使用此代码获取字符串并将其转换为二进制:
bin(reduce(lambda x, y: 256*x+y, (ord(c) for c in 'hello'), 0))
Run Code Online (Sandbox Code Playgroud)
这个输出:
0b110100001100101011011000110110001101111
Run Code Online (Sandbox Code Playgroud)
哪个,如果我把它放到这个网站(在右边的网站上),我得到了我的hello回信息.我想知道它使用什么方法.我知道我可以将二进制字符串拼接成8位,然后将其与相应的值bin(ord(character))或其他方式匹配.真的在寻找更简单的东西.
只是想知道Java中是否存在像Python中的PyAudiere模块中的库,它只是允许您创建音调并播放它们,就像这个示例Python代码:
device = audiere.open_device()
tone = device.create_tone(500) #create a 500hz tone
tone.play()
tone.stop()
Run Code Online (Sandbox Code Playgroud)
这只是为您的默认声音设备分配一个变量,然后为该设备发出音调然后播放它然后停止它.这样的库是否易于使用?
我感谢任何反馈,谢谢!:-D
我正在研究一些使用音频转换通过激光传输消息/文件/和其他数据的代码.我当前的代码使用python中binascii模块的hexlify函数将数据转换为二进制,然后为1发出一个音调,为0发出不同的音调.这在理论上有效,尽管不是最快的编码/解码方式,但在测试中证明有一些错误.
所产生的音调不是点亮的,即:发射150Hz在接收端可以变成145-155Hz,这不是一个大问题,因为我可以将接收端的边界设置得更低或更高.
真正的问题是,如果我发出一个音调,并且它被播放,接收端的计算机可能会多次读取它,或者根据它对输入音频进行采样的速率完全不读取它.我尝试以相同的速度播放音调,但这是非常不确定的.
总而言之,我使用短消息进行了几次成功的运行,但由于上述问题,这是非常不可靠和不准确的.
我已经进一步研究了这个问题,看起来它可能涉及BPSK或二进制相移键控,但我不确定如何实现它.任何建议或代码示例将不胜感激!
我可以在这里找到我的项目代码,但我正在处理的主要文件是二进制解码和编码,这里和这里.我不是python的专家所以请原谅我,如果我说的是错的,我的代码不是最好的,或者如果我忽略了一些基本的东西.
谢谢!:-)
我目前正在开展一个相对简单的项目,直到现在.基础项目是使用音频转换通过激光传输数据/消息.简而言之,这个过程就像这样
直到声音的实际处理很好,我目前的问题如下.
我玩每个音调为×时间,在其上记录用于Y时间接收端,Y时间被切断采样多次,然后分析由样品,然后记录每个频率样本.这是低效且不准确的.无论我何时播放音调,我都会遇到很多问题,因为它经常会听到两次音调或根本听不到它,这完全抛弃了整个信息.
我试图将它采样的速率与每个音调播放的时间相匹配,但除非相应地对齐,否则它不起作用.我只对"test"和"hi"等消息进行了一些成功的测试.我已经看过bpsk和fsk了,但是我觉得好像我已经做了类似的事情,但是我有一个糟糕的接收端来破译它.
这些都是用Python编写的,我非常感谢您提供的任何提示,建议或可能的实现.也用于音调发射我正在使用pyaudiere和录音我正在使用pyaudio.
谢谢!
史蒂夫
我有一个很长的URL正在构建使用nameValuePairs,我正在试图弄清楚为什么帖子在某些设备上导致500错误,而在其他设备上获得200.我需要从中提取完整的URL,httppost虽然我理解它应该是以下格式:
http://xx.com/site.asmx?var1=blah?var2=blah
Run Code Online (Sandbox Code Playgroud)
同样的构建适用于手机,而不适用于平板电脑.我已经尝试查看我的代码并捕捉平板电脑可能无法定义此类变量的任何地方,例如:
final TelephonyManager tm = (TelephonyManager) getBaseContext()
.getSystemService(Context.TELEPHONY_SERVICE);
String tmDevice;
try{
tmDevice = "" + tm.getDeviceId().toString();
}
catch (NullPointerException e)
{
tmDevice = "null";
}
Run Code Online (Sandbox Code Playgroud)
以下是nameValuePairs代码发布部分的一些外观和摘录:
List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(2);
nameValuePairs
.add(new BasicNameValuePair("CurrentOwnerUsername", name));
nameValuePairs.add(new BasicNameValuePair("OSVersion",
Build.VERSION.RELEASE));
nameValuePairs.add(new BasicNameValuePair("hash",
"xxx"));
nameValuePairs.add(new BasicNameValuePair("OSName", "Android"));
nameValuePairs.add(new BasicNameValuePair("Model", Build.MODEL));
nameValuePairs.add(new BasicNameValuePair("Manufacturer",
Build.MANUFACTURER));
nameValuePairs.add(new BasicNameValuePair("IMEI", id));
try {
nameValuePairs.add(new BasicNameValuePair("SerialNumber",
Build.SERIAL));
} catch (NoSuchFieldError e) {
nameValuePairs.add(new BasicNameValuePair("SerialNumber",
"NotAvailable"));
}
nameValuePairs.add(new …Run Code Online (Sandbox Code Playgroud)